1. 07 Mar, 2016 1 commit
  2. 01 Mar, 2016 2 commits
  3. 26 Feb, 2016 1 commit
  4. 24 Feb, 2016 5 commits
  5. 22 Feb, 2016 1 commit
  6. 19 Feb, 2016 1 commit
    • rmcilroy's avatar
      [Interpreter] Enable runtime profiler support for Ignition. · b62bf1e6
      rmcilroy authored
      Adds a profiling counter to each BytecodeArray object, and adds
      code to Jump and Return bytecode handlers to update this
      counter by the size of the jump or the distance from the return
      to the start of the function. This is more accurate than fullcodegen's
      approach since it takes forward jumps into account as well as back-edges.
      
      Modifies RuntimeProfiler to track ticks for interpreted frames.
      Currently we use the SharedFunctionInfo::profiler_ticks() instead
      of adding another to tick field to avoid adding another field to
      BytecodeArray since SharedFunctionInfo::profiler_ticks() is only
      used by Crankshaft otherwise so we shouldn't need both for
      
      BUG=v8:4689
      LOG=N
      
      Review URL: https://codereview.chromium.org/1707693003
      
      Cr-Commit-Position: refs/heads/master@{#34166}
      b62bf1e6
  7. 17 Feb, 2016 2 commits
  8. 16 Feb, 2016 2 commits
  9. 15 Feb, 2016 1 commit
  10. 12 Feb, 2016 1 commit
    • oth's avatar
      [interpreter] Add bytecodes for JumpIfNotHole with constant · 47c08f5f
      oth authored
      Adds JumpIfNotHoleConstant and JumpIfNotHoleConstantWide bytecodes
      and removes JumpIfHole bytecode.
      
      In situations with large numbers of constants, the generator would
      fail because an 8-bit constant could not be reserved for
      JumpIfHole/JumpIfNotHole and so a 16-bit constant would be reserved.
      Then when patching the bytecode the patcher would discover there was
      no wide constant variant of the emitted jump.
      
      BUG=v8:4280,v8:4680
      LOG=N
      
      Review URL: https://codereview.chromium.org/1697473002
      
      Cr-Commit-Position: refs/heads/master@{#33952}
      47c08f5f
  11. 11 Feb, 2016 6 commits
  12. 10 Feb, 2016 1 commit
    • rmcilroy's avatar
      [Interpreter] Make InterpreterAssembler a subclass of CodeStubAssembler. · d1c28849
      rmcilroy authored
      Moves InterpreterAssembler out of the compiler directory and into the
      interpreter directory. Makes InterpreterAssembler as subclass of
      CodeStubAssembler.
      
      As part of this change, the special bytecode dispatch linkage type
      is removed and instead we use a InterfaceDispatchDescriptor and
      a normal CodeStub linkage type.
      
      Removes a bunch of duplicated logic in InterpreterAssembler and
      instead uses the CodeStubAssembler logic. Refactors Interpreter
      with these changes.
      
      Modifies CodeStubAssembler to add the extra operations required
      by the Interpreter (extra call types, raw memory access and some extra
      binary ops). Also adds the ability for subclasses to add extra
      prologue and epilogue operations around calls, which is required
      for the Interpreter.
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1673333004
      
      Cr-Commit-Position: refs/heads/master@{#33873}
      d1c28849
  13. 08 Feb, 2016 3 commits
    • mstarzinger's avatar
      [interpreter] Remove special "prototype" load in class literals. · 5fdf5c1e
      mstarzinger authored
      This allows us to remove the somewhat awkward BuildLoadObjectField
      from the BytecodeGraphBuilder and also allows us to simplify the
      bytecode stream for class literals.
      
      R=oth@chromium.org
      
      Review URL: https://codereview.chromium.org/1678103002
      
      Cr-Commit-Position: refs/heads/master@{#33820}
      5fdf5c1e
    • mythria's avatar
      [Interpreter] Adds support for const/let variables to interpreter. · 90721a51
      mythria authored
      Adds implementation and tests to support const/let variables in the
      interpreter.
      
      BUG=v8:4280,v8:4679
      LOG=N
      
      Review URL: https://codereview.chromium.org/1634153002
      
      Cr-Commit-Position: refs/heads/master@{#33819}
      90721a51
    • bmeurer's avatar
      [runtime] Optimize and unify rest parameters. · 3ef573e9
      bmeurer authored
      Replace the somewhat awkward RestParamAccessStub, which would always
      call into the runtime anyway with a proper FastNewRestParameterStub,
      which is basically based on the code that was already there for strict
      arguments object materialization. But for rest parameters we could
      optimize even further (leading to 8-10x improvements for functions with
      rest parameters), by fixing the internal formal parameter count:
      
      Every SharedFunctionInfo has a formal_parameter_count field, which
      specifies the number of formal parameters, and is used to decide whether
      we need to create an arguments adaptor frame when calling a function
      (i.e. if there's a mismatch between the actual and expected parameters).
      Previously the formal_parameter_count included the rest parameter, which
      was sort of unfortunate, as that meant that calling a function with only
      the non-rest parameters still required an arguments adaptor (plus some
      other oddities). Now with this CL we fix, so that we do no longer
      include the rest parameter in that count. Thereby checking for rest
      parameters is very efficient, as we only need to check whether there is
      an arguments adaptor frame, and if not create an empty array, otherwise
      check whether the arguments adaptor frame has more parameters than
      specified by the formal_parameter_count.
      
      The FastNewRestParameterStub is written in a way that it can be directly
      used by Ignition as well, and with some tweaks to the TurboFan backends
      and the CodeStubAssembler, we should be able to rewrite it as
      TurboFanCodeStub in the near future.
      
      Drive-by-fix: Refactor and unify the CreateArgumentsType which was
      different in TurboFan and Ignition; now we have a single enum class
      which is used in both TurboFan and Ignition.
      
      R=jarin@chromium.org, rmcilroy@chromium.org
      TBR=rossberg@chromium.org
      BUG=v8:2159
      LOG=n
      
      Review URL: https://codereview.chromium.org/1676883002
      
      Cr-Commit-Position: refs/heads/master@{#33809}
      3ef573e9
  14. 04 Feb, 2016 4 commits
  15. 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
  16. 27 Jan, 2016 1 commit
  17. 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
  18. 22 Jan, 2016 1 commit
  19. 20 Jan, 2016 1 commit
  20. 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
  21. 18 Jan, 2016 1 commit
  22. 14 Jan, 2016 1 commit
    • rmcilroy's avatar
      [Interpreter] Ensure we always have an outer register allocation scope. · ef21fb2d
      rmcilroy authored
      Split RegisterAllocationScope out of ExpressionResult and allocate one
      for each statement. This ensures that we always have an outer register
      allocation scope for statement code (used in CountOperation and
      RegisterExecutionResult). Also refactored the register allocator code to
      move it to it's own file and rename from TemporaryRegisterScope to
      BytecodeRegisterAllocator.
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1587033002
      
      Cr-Commit-Position: refs/heads/master@{#33296}
      ef21fb2d
  23. 11 Jan, 2016 1 commit