1. 27 Jun, 2019 1 commit
  2. 19 Jun, 2019 1 commit
  3. 23 May, 2019 1 commit
  4. 13 Oct, 2017 1 commit
  5. 21 Nov, 2016 1 commit
  6. 05 Oct, 2016 1 commit
  7. 13 Sep, 2016 1 commit
  8. 15 Jul, 2016 1 commit
  9. 14 Jul, 2016 1 commit
  10. 13 Jul, 2016 1 commit
  11. 21 Jun, 2016 3 commits
  12. 12 May, 2016 1 commit
    • oth's avatar
      [interpreter] Introduce bytecode generation pipeline. · 02b7373a
      oth authored
      This change introduces a pipeline for the final stages of
      bytecode generation.
      
      The peephole optimizer is made distinct from the BytecodeArrayBuilder.
      
      A new BytecodeArrayWriter is responsible for writing bytecode. It
      also keeps track of the maximum register seen and offers a potentially
      smaller frame size.
      
      R=rmcilroy@chromium.org
      LOG=N
      BUG=v8:4280
      
      Review-Url: https://codereview.chromium.org/1947403002
      Cr-Commit-Position: refs/heads/master@{#36220}
      02b7373a
  13. 21 Mar, 2016 1 commit
    • oth's avatar
      [interpreter] Add support for scalable operands. · 48d082af
      oth authored
      This change introduces wide prefix bytecodes to support wide (16-bit)
      and extra-wide (32-bit) operands. It retires the previous
      wide-bytecodes and reduces the number of operand types.
      
      Operands are now either scalable or fixed size. Scalable operands
      increase in width when a bytecode is prefixed with wide or extra-wide.
      
      The bytecode handler table is extended to 256*3 entries. The
      first 256 entries are used for bytecodes with 8-bit operands,
      the second 256 entries are used for bytecodes with operands that
      scale to 16-bits, and the third group of 256 entries are used for
      bytecodes with operands that scale to 32-bits.
      
      LOG=N
      BUG=v8:4747,v8:4280
      
      Review URL: https://codereview.chromium.org/1783483002
      
      Cr-Commit-Position: refs/heads/master@{#34955}
      48d082af
  14. 11 Feb, 2016 3 commits
  15. 03 Feb, 2016 1 commit
  16. 02 Feb, 2016 1 commit
    • oth's avatar
      [interpreter] Move temporary register allocator into own file. · ef93854a
      oth authored
      Moves the temporary register allocator out of the bytecode array
      builder into TemporaryRegisterAllocator class and adds unittests.
      Particular must be taken around the translation window boundary
      motivating the addition of tests.
      
      Also adds a Clear() method to IdentityMap() which is called by
      the destructor. This allows classes to hold an IdentityMap if
      they are zone allocated. Classes must call Clear() before the zone
      is re-cycled or face v8 heap corruption.
      
      BUG=v8:4280,v8:4675
      LOG=N
      
      Review URL: https://codereview.chromium.org/1651133002
      
      Cr-Commit-Position: refs/heads/master@{#33686}
      ef93854a
  17. 29 Jan, 2016 1 commit
    • jkummerow's avatar
      Introduce {FAST,SLOW}_STRING_WRAPPER_ELEMENTS · f4872f74
      jkummerow authored
      String wrappers (new String("foo")) are special objects: their string
      characters are accessed like elements, and they also have an elements
      backing store. This used to require a bunch of explicit checks like:
      
      if (obj->IsJSValue() && JSValue::cast(obj)->value()->IsString()) {
        /* Handle string characters */
      }
      // Handle regular elements (for string wrappers and other objects)
      obj->GetElementsAccessor()->Whatever(...);
      
      This CL introduces new ElementsKinds for string wrapper objects (one for
      fast elements, one for dictionary elements), which allow folding the
      special-casing into new StringWrapperElementsAccessors.
      
      No observable change in behavior is intended.
      
      Review URL: https://codereview.chromium.org/1612323003
      
      Cr-Commit-Position: refs/heads/master@{#33616}
      f4872f74
  18. 28 Jan, 2016 1 commit
    • rmcilroy's avatar
      [Interpreter] Add option to trace bytecode execution. · 6399fce5
      rmcilroy authored
      Adds --trace-ignition flag which allows tracing of bytecodes as they
      execute. As well as printing out the bytecode, this also prints out the
      input and output registers to each operation. The generated output looks
      as follows:
      
       -> 0x350cb46d5264 (139) : 49 fc fb 03 07    Call r4, r5, #3, [7]
            [ accumulator -> 0x177fba00bc99 <JS Array[2]> ]
            [          r4 -> 0x350cb46ce099 <JS Function InstallFunctions (SharedFunctionInfo 0x350cb46470c1)> ]
            [          r5 -> 0x350cb46cddc1 <an Object with map 0x35fdf590a3a9> ]
            [          r6 -> 0x350cb46d3f11 <JS Function Proxy (SharedFunctionInfo 0x350cb46d3e61)> ]
            [          r7 -> 2 ]
            [ accumulator <- 0x350cb4604189 <undefined> ]
       -> 0x350cb46d5978 (47) : 4b f8 00 00 00    CallRuntime [248], r0, #0
            [ accumulator -> 0x350cb4604189 <undefined> ]
            [ accumulator <- 0x350cb4604189 <undefined> ]
       -> 0x350cb46d597d (52) : 23 09             Ldar a0
            [ accumulator -> 0x350cb4604189 <undefined> ]
            [          a0 -> 0x350cb46d3f11 <JS Function Proxy (SharedFunctionInfo 0x350cb46d3e61)> ]
            [ accumulator <- 0x350cb46d3f11 <JS Function Proxy (SharedFunctionInfo 0x350cb46d3e61)> ]
       -> 0x350cb46d597f (54) : 24 fd             Star r3
            [ accumulator -> 0x350cb46d3f11 <JS Function Proxy (SharedFunctionInfo 0x350cb46d3e61)> ]
            [ accumulator <- 0x350cb46d3f11 <JS Function Proxy (SharedFunctionInfo 0x350cb46d3e61)> ]
            [          r3 <- 0x350cb46d3f11 <JS Function Proxy (SharedFunctionInfo 0x350cb46d3e61)> ]
      
      Also adds support for --print_source and --print-ast to the interpreter.
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1640213002
      
      Cr-Commit-Position: refs/heads/master@{#33594}
      6399fce5
  19. 27 Jan, 2016 1 commit
  20. 26 Jan, 2016 1 commit
    • oth's avatar
      [interpreter] Wide register support. · 19df7a20
      oth authored
      This increases the size of register operands to be 16-bit.
      
      Not all bytecodes have wide register variants, so when they are
      needed a register translator will copy them into a small area
      reserved at the top of the 8-bit register range and these registers
      are supplied as arguments to the bytecode with 8-bit operands.
      
      This is non-intrusive for typical bytecode where the number of
      registers is less than 120. For bytecodes with wide register
      operands (above the window) their index needs to be translated
      to avoid the reserved translation window.
      
      Enables splay.js to run in Octane and a handful of mjsunit tests.
      
      BUG=v8:4280,v8:4675
      LOG=NO
      
      Review URL: https://codereview.chromium.org/1613163002
      
      Cr-Commit-Position: refs/heads/master@{#33516}
      19df7a20
  21. 19 Jan, 2016 1 commit
    • oth's avatar
      [Interpreter] Preparation for wide registers. · 68654b64
      oth authored
      o Adds wide variants of bytecodes that have operands describing ranges
        of registers. The upcoming wide register support does not suppport
        re-mapping ranges.
      o Adds kRegPair16 and kRegTriple16 operands required for new wide
        bytecodes and renames Count8/Count16 operands to RegCount8/RegCount16.
      o Removes Exchange bytecodes
      
      BUG=v8:4675
      LOG=NO
      
      Review URL: https://codereview.chromium.org/1595103006
      
      Cr-Commit-Position: refs/heads/master@{#33389}
      68654b64
  22. 18 Jan, 2016 1 commit
  23. 08 Jan, 2016 1 commit
  24. 05 Jan, 2016 1 commit
    • oth's avatar
      [Interpreter] Add support for jumps using constants with wide operands. · 8109f63f
      oth authored
      This increases the size of addressable constant pool entries for jumps
      to match other bytecodes using operands indexing the constant pool.
      
      This change also introduces reservations for constant pool entries.
      Reservations are used for forward jumps to ensure a constant pool entry
      will be available when the jump target (label) is bound and the jump is
      patched up in the bytecode array.
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1546683002
      
      Cr-Commit-Position: refs/heads/master@{#33125}
      8109f63f
  25. 04 Jan, 2016 1 commit
  26. 18 Dec, 2015 1 commit
    • rmcilroy's avatar
      [Interpreter] Generate valid FrameStates in the Bytecode Graph Builder. · 32211800
      rmcilroy authored
      Adds FrameState nodes to graphs built by the Bytecode Graph Builder, in
      preparation for adding deopt support. Also adds a new
      FrameStateType::kInterpretedFunction to allow for specialized deopt
      stack translation for interpreted frames. Finally adds support for
      disabling typed lowering of binary ops, since the current approach
      relies on a FrameState hack which does not apply to interpreted frames
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1514413002
      
      Cr-Commit-Position: refs/heads/master@{#32964}
      32211800
  27. 16 Dec, 2015 1 commit
  28. 17 Nov, 2015 1 commit
    • oth's avatar
      [Interpreter] Add support for Call bytecode to bytecode graph builder. · e8ae8b34
      oth authored
      Adds support for visiting the Call bytecode to the bytecode graph builder.
      This change also adds the call type feedback slot to the Call bytecode.
      This is not currently used by the interpreter, but is used by the
      graph builder.
      
      Also adds a CallWide varient of the Call bytecode, and adds the kCount16
      operand type.
      
      Landed on behalf of rmcilroy.
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1456453002
      
      Cr-Commit-Position: refs/heads/master@{#32033}
      e8ae8b34
  29. 05 Nov, 2015 1 commit
  30. 04 Nov, 2015 1 commit
  31. 02 Oct, 2015 5 commits
    • rmcilroy's avatar
      [Interpreter] Add CallRuntime support to the interpreter. · 75f6ad74
      rmcilroy authored
      Adds support for calling runtime functions from the interpreter. Adds the
      CallRuntime bytecode which takes a Runtime::FunctionId of the function to call
      and the arguments in sequential registers. Adds a InterpreterCEntry builtin
      to enable the interpreter to enter C++ code based on the functionId.
      
      Also renames Builtin::PushArgsAndCall to Builtin::InterpreterPushArgsAndCall
      and groups all the interpreter builtins together.
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1362383002
      
      Cr-Commit-Position: refs/heads/master@{#31089}
      75f6ad74
    • rmcilroy's avatar
      Revert of [Interpreter] Add CallRuntime support to the interpreter. (patchset... · b4a2f656
      rmcilroy authored
      Revert of [Interpreter] Add CallRuntime support to the interpreter. (patchset #8 id:220001 of https://codereview.chromium.org/1362383002/ )
      
      Reason for revert:
      Now breaking arm32 debug bot (worked locally even with --debug-code, so I'll need to figure out what's different on the bot)
      
      Original issue's description:
      > [Interpreter] Add CallRuntime support to the interpreter.
      >
      > Adds support for calling runtime functions from the interpreter. Adds the
      > CallRuntime bytecode which takes a Runtime::FunctionId of the function to call
      > and the arguments in sequential registers. Adds a InterpreterCEntry builtin
      > to enable the interpreter to enter C++ code based on the functionId.
      >
      > Also renames Builtin::PushArgsAndCall to Builtin::InterpreterPushArgsAndCall
      > and groups all the interpreter builtins together.
      >
      > BUG=v8:4280
      > LOG=N
      >
      
      TBR=bmeurer@chromium.org,oth@chromium.org,mstarzinger@chromium.org
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:4280
      
      Review URL: https://codereview.chromium.org/1379933003
      
      Cr-Commit-Position: refs/heads/master@{#31078}
      b4a2f656
    • rmcilroy's avatar
      [Interpreter] Add CallRuntime support to the interpreter. · c991d8f3
      rmcilroy authored
      Adds support for calling runtime functions from the interpreter. Adds the
      CallRuntime bytecode which takes a Runtime::FunctionId of the function to call
      and the arguments in sequential registers. Adds a InterpreterCEntry builtin
      to enable the interpreter to enter C++ code based on the functionId.
      
      Also renames Builtin::PushArgsAndCall to Builtin::InterpreterPushArgsAndCall
      and groups all the interpreter builtins together.
      
      BUG=v8:4280
      LOG=N
      
      Committed: https://crrev.com/40e8424b744f8b6e3e1d93e20f23487419911dfc
      Cr-Commit-Position: refs/heads/master@{#31064}
      
      Review URL: https://codereview.chromium.org/1362383002
      
      Cr-Commit-Position: refs/heads/master@{#31076}
      c991d8f3
    • rmcilroy's avatar
      Revert of [Interpreter] Add CallRuntime support to the interpreter. (patchset... · 90f69d16
      rmcilroy authored
      Revert of [Interpreter] Add CallRuntime support to the interpreter. (patchset #6 id:180001 of https://codereview.chromium.org/1362383002/ )
      
      Reason for revert:
      Broke Arm64 bot (CEntry stub is trying to pop arguments off stack when argv_in_reg, so I need to fix this).
      
      Original issue's description:
      > [Interpreter] Add CallRuntime support to the interpreter.
      >
      > Adds support for calling runtime functions from the interpreter. Adds the
      > CallRuntime bytecode which takes a Runtime::FunctionId of the function to call
      > and the arguments in sequential registers. Adds a InterpreterCEntry builtin
      > to enable the interpreter to enter C++ code based on the functionId.
      >
      > Also renames Builtin::PushArgsAndCall to Builtin::InterpreterPushArgsAndCall
      > and groups all the interpreter builtins together.
      >
      > BUG=v8:4280
      > LOG=N
      >
      > Committed: https://crrev.com/40e8424b744f8b6e3e1d93e20f23487419911dfc
      > Cr-Commit-Position: refs/heads/master@{#31064}
      
      TBR=bmeurer@chromium.org,oth@chromium.org,mstarzinger@chromium.org
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:4280
      
      Review URL: https://codereview.chromium.org/1387543002
      
      Cr-Commit-Position: refs/heads/master@{#31066}
      90f69d16
    • rmcilroy's avatar
      [Interpreter] Add CallRuntime support to the interpreter. · 40e8424b
      rmcilroy authored
      Adds support for calling runtime functions from the interpreter. Adds the
      CallRuntime bytecode which takes a Runtime::FunctionId of the function to call
      and the arguments in sequential registers. Adds a InterpreterCEntry builtin
      to enable the interpreter to enter C++ code based on the functionId.
      
      Also renames Builtin::PushArgsAndCall to Builtin::InterpreterPushArgsAndCall
      and groups all the interpreter builtins together.
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1362383002
      
      Cr-Commit-Position: refs/heads/master@{#31064}
      40e8424b
  32. 01 Oct, 2015 1 commit
    • rmcilroy's avatar
      [Interpreter] Add support for short (16 bit) operands. · 03369ed2
      rmcilroy authored
      Adds support for short operands, starting with kIdx16. Introduces
      BytecodeTraits to enable compile time determination of various traits for a
      bytecode, such as size, operands, etc. Reworks BytecodeIterator,
      BytecodeArrayBuilder and Bytecodes::Decode to support 16 bit operands. Adds
      support to Interpreter to load 16 bit operands.
      
      Also fixes a bug with ToBoolean where it wouldn't get emitted at the start
      of a block, and added a test.
      
      BytecodeTraits template magic inspired by oth@chromium.org.
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1370893002
      
      Cr-Commit-Position: refs/heads/master@{#31058}
      03369ed2