1. 04 Feb, 2016 3 commits
    • mvstanton's avatar
      Type Feedback Vector lives in the closure · bb31db3a
      mvstanton authored
      (RELAND: the problem before was a missing write barrier for adding the code
      entry to the new closure. It's been addressed with a new macro instruction
      and test. The only change to this CL is the addition of two calls to
      __ RecordWriteCodeEntryField() in the platform CompileLazy builtin.)
      
      We get less "pollution" of type feedback if we have one vector per native
      context, rather than one for the whole system. This CL moves the vector
      appropriately.
      
      We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The
      vector actually lives in the first slot of the literals array (indeed there is
      great commonality between those arrays, they can be thought of as the same
      thing). So we make greater effort to ensure there is a valid literals array
      after compilation.
      
      This meant, for performance reasons, that we needed to extend
      FastNewClosureStub to support creating closures with literals. And ultimately,
      it drove us to move the optimized code map lookup out of FastNewClosureStub
      and into the compile lazy builtin.
      
      The heap change is trivial so I TBR Hannes for it...
      Also, Yang has had a look at the debugger changes already and approved 'em. So he is TBR style too.
      And Benedikt reviewed it as well.
      
      TBR=hpayer@chromium.org, yangguo@chromium.org, bmeurer@chromium.org
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1668103002
      
      Cr-Commit-Position: refs/heads/master@{#33741}
      bb31db3a
    • mstarzinger's avatar
      [interpreter] Switch context during stack unwinding. · 76bfc16b
      mstarzinger authored
      This implements proper context switching while unwinding the stack due
      to an exception being handled in interpreted code. The context under
      which the handler is scoped is being preserved in a dedicated register
      while the try-block is running. Both, the stack unwinding machinery as
      well as the graph builder, restore the context from that register.
      
      R=rmcilroy@chromium.org,bmeurer@chromium.org
      BUG=v8:4674
      LOG=n
      
      Review URL: https://codereview.chromium.org/1665833002
      
      Cr-Commit-Position: refs/heads/master@{#33733}
      76bfc16b
    • rmcilroy's avatar
      [Interpreter] Add explicit StackCheck bytecodes on function entry and back branches. · 1ce720f2
      rmcilroy authored
      Moves the stack check from the function entry trampoline to instead be
      after function activation using an explicit StackCheck bytecode. Also
      add stack checks on back edges of loops.
      
      BUG=v8:4280,v8:4678
      LOG=N
      
      Review URL: https://codereview.chromium.org/1665853002
      
      Cr-Commit-Position: refs/heads/master@{#33730}
      1ce720f2
  2. 03 Feb, 2016 2 commits
  3. 01 Feb, 2016 2 commits
    • rmcilroy's avatar
      [Interpreter] Set bytecode array in Runtime_SetCode. · d81edba7
      rmcilroy authored
      Set the bytecode array correctly in Runtime_SetCode.
      This fixes issues with building the snapshot with ignition enabled.
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1647913002
      
      Cr-Commit-Position: refs/heads/master@{#33638}
      d81edba7
    • yangguo's avatar
      [debugger] correctly find function context. · 835b0383
      yangguo authored
      In the debugger we are interested in getting the context for the
      current frame, which is usually a function context. To do that,
      we used to call Context::declaration_context, which may also
      return a block context. This is wrong and can lead to crashes.
      Instead, we now use a newly introduced Context::closure_context,
      which skips block contexts. This works fine for the debugger,
      since we have other means to find and materialize block contexts.
      
      R=rossberg@chromium.org
      BUG=chromium:582051
      LOG=N
      
      Review URL: https://codereview.chromium.org/1648263002
      
      Cr-Commit-Position: refs/heads/master@{#33627}
      835b0383
  4. 28 Jan, 2016 1 commit
    • mstarzinger's avatar
      [interpreter] Translate exception handlers into graph. · 8bfa1ea3
      mstarzinger authored
      This translates the exception handler table attached to a bytecode array
      correctly into exceptional projections within the TurboFan graph. We
      perform an abstract simulation of handlers that are being entered and
      exited by the bytecode iteration to track the correct handler for each
      node.
      
      R=oth@chromium.org
      BUG=v8:4674
      LOG=n
      
      Review URL: https://codereview.chromium.org/1641723002
      
      Cr-Commit-Position: refs/heads/master@{#33580}
      8bfa1ea3
  5. 27 Jan, 2016 4 commits
    • mvstanton's avatar
      Revert of Type Feedback Vector lives in the closure (patchset #2 id:20001 of... · a7027851
      mvstanton authored
      Revert of Type Feedback Vector lives in the closure (patchset #2 id:20001 of https://codereview.chromium.org/1642613002/ )
      
      Reason for revert:
      Bug: failing to use write barrier when writing code entry into closure.
      
      Original issue's description:
      > Reland of Type Feedback Vector lives in the closure
      >
      > (Fixed a bug found by nosnap builds.)
      >
      > We get less "pollution" of type feedback if we have one vector per native
      > context, rather than one for the whole system. This CL moves the vector
      > appropriately.
      >
      > We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The
      > vector actually lives in the first slot of the literals array (indeed there is
      > great commonality between those arrays, they can be thought of as the same
      > thing). So we make greater effort to ensure there is a valid literals array
      > after compilation.
      >
      > This meant, for performance reasons, that we needed to extend
      > FastNewClosureStub to support creating closures with literals. And ultimately,
      > it drove us to move the optimized code map lookup out of FastNewClosureStub
      > and into the compile lazy builtin.
      >
      > The heap change is trivial so I TBR Hannes for it...
      >
      > TBR=hpayer@chromium.org
      > BUG=
      >
      > Committed: https://crrev.com/d984b3b0ce91e55800f5323b4bb32a06f8a5aab1
      > Cr-Commit-Position: refs/heads/master@{#33548}
      
      TBR=bmeurer@chromium.org,yangguo@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=
      
      Review URL: https://codereview.chromium.org/1643533003
      
      Cr-Commit-Position: refs/heads/master@{#33556}
      a7027851
    • mvstanton's avatar
      Reland of Type Feedback Vector lives in the closure · d984b3b0
      mvstanton authored
      (Fixed a bug found by nosnap builds.)
      
      We get less "pollution" of type feedback if we have one vector per native
      context, rather than one for the whole system. This CL moves the vector
      appropriately.
      
      We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The
      vector actually lives in the first slot of the literals array (indeed there is
      great commonality between those arrays, they can be thought of as the same
      thing). So we make greater effort to ensure there is a valid literals array
      after compilation.
      
      This meant, for performance reasons, that we needed to extend
      FastNewClosureStub to support creating closures with literals. And ultimately,
      it drove us to move the optimized code map lookup out of FastNewClosureStub
      and into the compile lazy builtin.
      
      The heap change is trivial so I TBR Hannes for it...
      
      TBR=hpayer@chromium.org
      BUG=
      
      Review URL: https://codereview.chromium.org/1642613002
      
      Cr-Commit-Position: refs/heads/master@{#33548}
      d984b3b0
    • sigurds's avatar
      [turbofan] Improve iteration order in escape object analysis · e41c62a8
      sigurds authored
      BUG=v8:4586
      LOG=n
      
      Review URL: https://codereview.chromium.org/1631333002
      
      Cr-Commit-Position: refs/heads/master@{#33542}
      e41c62a8
    • yangguo's avatar
      [regexp] implement case-insensitive unicode regexps. · a2baaaac
      yangguo authored
      BUG=v8:2952
      LOG=N
      
      Review URL: https://codereview.chromium.org/1599303002
      
      Cr-Commit-Position: refs/heads/master@{#33538}
      a2baaaac
  6. 26 Jan, 2016 7 commits
    • mvstanton's avatar
      Revert of Type Feedback Vector lives in the closure (patchset #12 id:260001 of... · e2e7dc32
      mvstanton authored
      Revert of Type Feedback Vector lives in the closure (patchset #12 id:260001 of https://codereview.chromium.org/1563213002/ )
      
      Reason for revert:
      FAilure on win32 bot, need to investigate webkit failures.
      
      Original issue's description:
      > Type Feedback Vector lives in the closure
      >
      > We get less "pollution" of type feedback if we have one vector per native
      > context, rather than one for the whole system. This CL moves the vector
      > appropriately.
      >
      > We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The
      > vector actually lives in the first slot of the literals array (indeed there is
      > great commonality between those arrays, they can be thought of as the same
      > thing). So we make greater effort to ensure there is a valid literals array
      > after compilation.
      >
      > This meant, for performance reasons, that we needed to extend
      > FastNewClosureStub to support creating closures with literals. And ultimately,
      > it drove us to move the optimized code map lookup out of FastNewClosureStub
      > and into the compile lazy builtin.
      >
      > The heap change is trivial so I TBR Hannes for it...
      >
      > TBR=hpayer@chromium.org
      >
      > BUG=
      >
      > Committed: https://crrev.com/a5200f7ed4d11c6b882fa667da7a1864226544b4
      > Cr-Commit-Position: refs/heads/master@{#33518}
      
      TBR=bmeurer@chromium.org,akos.palfi@imgtec.com
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=
      
      Review URL: https://codereview.chromium.org/1632993003
      
      Cr-Commit-Position: refs/heads/master@{#33520}
      e2e7dc32
    • mvstanton's avatar
      Type Feedback Vector lives in the closure · a5200f7e
      mvstanton authored
      We get less "pollution" of type feedback if we have one vector per native
      context, rather than one for the whole system. This CL moves the vector
      appropriately.
      
      We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The
      vector actually lives in the first slot of the literals array (indeed there is
      great commonality between those arrays, they can be thought of as the same
      thing). So we make greater effort to ensure there is a valid literals array
      after compilation.
      
      This meant, for performance reasons, that we needed to extend
      FastNewClosureStub to support creating closures with literals. And ultimately,
      it drove us to move the optimized code map lookup out of FastNewClosureStub
      and into the compile lazy builtin.
      
      The heap change is trivial so I TBR Hannes for it...
      
      TBR=hpayer@chromium.org
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1563213002
      
      Cr-Commit-Position: refs/heads/master@{#33518}
      a5200f7e
    • rmcilroy's avatar
      [Interpreter] Add back one more skip for an mjsunit test failing on Arm64 on Ignition. · 8476397f
      rmcilroy authored
      BUG=v8:4280
      LOG=N
      TBR=machenbach@chromium.org
      NOTRY=true
      
      Review URL: https://codereview.chromium.org/1633133002
      
      Cr-Commit-Position: refs/heads/master@{#33517}
      8476397f
    • 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
    • sigurds's avatar
      [turbofan] Disable test · a59653a2
      sigurds authored
      This CL disables a test that takes too long in debug mode when
      escape analysis is enabled in turbofan.
      
      R=machenbach@chromium.org
      BUG=v8:4586
      LOG=n
      NOTRY=true
      
      Review URL: https://codereview.chromium.org/1636593004
      
      Cr-Commit-Position: refs/heads/master@{#33514}
      a59653a2
    • rmcilroy's avatar
      [Interpreter] Fix deopting from inline functions. · 32eade63
      rmcilroy authored
      Rename IntepreterExceptionEntryHandler builtin to InterpreterEnterBytecodeDispatch
      and use it as the return address when building interpreter frames during deopt.
      This ensures that we restart execution of the outer frame at the correct
      bytecode.
      
      BUG=v8:4280,v8:4678
      LOG=N
      
      Review URL: https://codereview.chromium.org/1633633002
      
      Cr-Commit-Position: refs/heads/master@{#33512}
      32eade63
    • rmcilroy's avatar
      [Interpreter] Add native function literal support. · befe61fa
      rmcilroy authored
      Adds support for calling native function literals. Moves the logic for building
      the native function's SharedFunctionInfo out of full-codegen into compiler.cc
      to allow it to be shared between fullcodegen and Ignition.
      
      BUG=v8:4686
      LOG=N
      
      Review URL: https://codereview.chromium.org/1635553002
      
      Cr-Commit-Position: refs/heads/master@{#33510}
      befe61fa
  7. 25 Jan, 2016 4 commits
  8. 22 Jan, 2016 2 commits
  9. 21 Jan, 2016 1 commit
  10. 20 Jan, 2016 2 commits
    • mstarzinger's avatar
      [interpreter] First implementation of stack unwinding. · 0b3066b8
      mstarzinger authored
      This implements a first prototype of stack unwinding for interpreted
      frames. The unwinding machinery performs a range-based lookup in the
      given handler table and potentially continues dispatching at the handler
      offset. Note that this does not yet correctly restore the context to the
      correct value when the handler is being entered.
      
      R=rmcilroy@chromium.org,oth@chromium.org
      BUG=v8:4674
      LOG=n
      
      Review URL: https://codereview.chromium.org/1605633003
      
      Cr-Commit-Position: refs/heads/master@{#33414}
      0b3066b8
    • mythria's avatar
      [Interpreter] Marks that 'throw' has returned a value. · 232e28d6
      mythria authored
      This is to fix some of the failing test262 tests with ignition flag.
      In few test262 tests, there is a throw from the script scope. Rewriter::Rewrite
      pass converts expression statements into assignment statements in script scope.
      This causes interpreter to fail because assignment expression expects a result
      in accumulator but throw statement does not return a value. To fix this, we
      now mark that accumulator contains a value when visiting throw statement.
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1523423003
      
      Cr-Commit-Position: refs/heads/master@{#33408}
      232e28d6
  11. 19 Jan, 2016 1 commit
  12. 18 Jan, 2016 3 commits
  13. 15 Jan, 2016 3 commits
  14. 14 Jan, 2016 3 commits
  15. 13 Jan, 2016 1 commit
    • mythria's avatar
      [Interpreter] Removes assignment hazard scope. · eccbdde0
      mythria authored
      Removes assignment hazard scope. Reverts back to the naive scheme of
      allocating a temporary for every variable load. It was decided to revert it
      because the current implementation does not handle logical expressions,
      ternary operators, visiting objects in named/keyed loads. Also, we wanted
      to evaluate alternate approaches and choose one when we have a mechanism
      to measure performance.
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1576403004
      
      Cr-Commit-Position: refs/heads/master@{#33269}
      eccbdde0
  16. 12 Jan, 2016 1 commit