1. 29 Feb, 2016 2 commits
  2. 25 Feb, 2016 1 commit
  3. 24 Feb, 2016 4 commits
  4. 23 Feb, 2016 2 commits
  5. 19 Feb, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Remove the JSContextRelaxation reducer. · 8a7186b8
      bmeurer authored
      This reducer doesn't really add value, because:
      
       (a) it is only concerned with JSCallFunction and JSToNumber, but when
           we get to it, all JSCallFunction nodes will have been replaced by
           Call nodes, and in the not so far future, we will also have
           replaced almost all JSToNumber nodes with better code,
       (b) and the reducer tries to be smart and use one of the outermost
           contexts, but that might not be beneficial always; actually it
           might even create longer live ranges and lead to more spilling
           in some cases.
      
      But most importantly, the JSContextRelaxation currently blocks inlining
      based on SharedFunctionInfo, because it requires the inliner to check
      the native context, which in turn requires JSFunction knowledge. So I'm
      removing this reducer for now to unblock the more important inliner
      changes.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1715633002
      
      Cr-Commit-Position: refs/heads/master@{#34139}
      8a7186b8
  6. 14 Feb, 2016 1 commit
  7. 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
  8. 08 Feb, 2016 2 commits
    • bmeurer's avatar
      [turbofan] Introduce JSCreateLowering for optimizing JSCreate nodes. · 07e9921f
      bmeurer authored
      This moves the JSCreate related functionality from JSTypedLowering into
      a dedicated JSCreateLowering reducer. This is in preparation of landing
      the support for optimized literals in TurboFan, which would blow up
      JSTypedLowering quite seriously otherwise.
      
      R=mstarzinger@chromium.org
      
      Review URL: https://codereview.chromium.org/1678833002
      
      Cr-Commit-Position: refs/heads/master@{#33813}
      07e9921f
    • ulan's avatar
      New page local store buffer. · bb883395
      ulan authored
      This replaces the global remembered set with per-page remembered sets.
      
      Each page in the old space, map space, and large object space keeps track of
      the set of slots in the page pointing to the new space.
      
      The data structure for storing slot sets is a two-level bitmap, which allows
      us to remove the store buffer overflow and SCAN_ON_SCAVENGE logic.
      
      Design doc: https://goo.gl/sMKCf7
      
      BUG=chromium:578883
      LOG=NO
      
      Review URL: https://codereview.chromium.org/1608583002
      
      Cr-Commit-Position: refs/heads/master@{#33806}
      bb883395
  9. 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
  10. 25 Jan, 2016 1 commit
    • titzer's avatar
      [wasm] Add loop assignment analysis. · 0ab1e562
      titzer authored
      This CL implements loop assignment analysis, a pass over a loop's body
      to record local variables that are assigned. This pre-pass is similar
      to that done on the JavaScript AST for the same reason: avoid introducing
      too many phis at loop headers when building a graph.
      
      R=bradnelson@chromium.org,ahaas@chromium.org
      BUG=
      
      Review URL: https://codereview.chromium.org/1617723003
      
      Cr-Commit-Position: refs/heads/master@{#33486}
      0ab1e562
  11. 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
  12. 05 Jan, 2016 2 commits
  13. 17 Dec, 2015 2 commits
  14. 11 Dec, 2015 1 commit
    • titzer's avatar
      Initial import of v8-native WASM. · 4c5b3609
      titzer authored
      As discussed in person, this adds the code from v8-native-prototype into
      V8 proper, guarded by GYP flags that do not build the code by default.
      Passing wasm=on to 'make' or setting v8_wasm as a GYP flag activates
      building of this code.
      
      An additional header file is added to and exported from the compiler
      directory, src/compiler/wasm-compiler.h. This exposes a limited interface
      with opaque Node and Graph types to the decoder to build TF graphs, as
      well as functions to compile WASM graphs.
      
      The mjsunit tests added are blacklisted because they fail without the
      WASM object exposed to JS, which is also disabled by the build config
      option.
      
      This corresponds closely to https://github.com/WebAssembly/v8-native-prototype/commit/5981e06ebc9b1e578831d03100f17ebb77970ee0, with some formatting fixes and moving some files into src/compiler.
      
      R=mstarzinger@chromium.org, bradnelson@chromium.org
      BUG=
      
      Review URL: https://codereview.chromium.org/1504713014
      
      Cr-Commit-Position: refs/heads/master@{#32794}
      4c5b3609
  15. 09 Dec, 2015 1 commit
  16. 02 Dec, 2015 1 commit
    • sigurds's avatar
      [turbofan] Initial support for escape analysis. · aa0ddf7d
      sigurds authored
      This is the first part of escape analysis for turbofan.
      At the moment, there is no deopt support, and support
      for loops is partial (only binary Phis are handled).
      
      The CL includes 4 unittests.
      
      There are also 8 new mjsunit tests, some of which are
      skiped as they require features not yet implemented.
      
      BUG=v8:4586
      LOG=n
      
      Review URL: https://codereview.chromium.org/1457683003
      
      Cr-Commit-Position: refs/heads/master@{#32498}
      aa0ddf7d
  17. 26 Nov, 2015 3 commits
  18. 25 Nov, 2015 1 commit
    • fedor's avatar
      [compiler] merge binary-operator-reducer · 993ba9d2
      fedor authored
      Merge BinaryOperatorReducer into the MachineOperatorReducer class.
      It does not need `Revisit()` calls, because the newly inserted nodes are
      visited anyway, and there are no other methods that need AdvancedReducer
      there.
      
      BUG=
      R=titzer@chromium.org
      
      Review URL: https://codereview.chromium.org/1473073004
      
      Cr-Commit-Position: refs/heads/master@{#32298}
      993ba9d2
  19. 18 Nov, 2015 1 commit
  20. 14 Nov, 2015 1 commit
    • mlippautz's avatar
      Add {CancelableTaskManager} to handle {Cancelable} concurrent tasks. · 60e7ea8a
      mlippautz authored
      This change binds each {Cancelable} task to a so-called {CancelableTaskManager},
      which is then used to handle concurrent cancelation as well as synchronizing
      shutdown for already running tasks.  Since ownership of tasks is transferred to
      the platform executing a task (destructor), handling in the manager uses integer
      ids. Note that this also mitigates (modulo integer size) the ABA problem.
      
      All handling of {Cancelable} tasks is now encapsulated into the corresponding
      manager, which is instantiated for each isolate.
      
      R=hpayer@chromium.org
      BUG=chromium:524425
      LOG=N
      CQ_EXTRA_TRYBOTS=tryserver.v8:v8_linux_arm64_gc_stress_dbg;tryserver.v8:v8_linux_gc_stress_dbg;tryserver.v8:v8_mac_gc_stress_dbg;tryserver.v8:v8_linux64_msan_rel;tryserver.v8:v8_linux64_tsan_rel;tryserver.v8:v8_mac64_asan_rel
      
      Review URL: https://codereview.chromium.org/1409993012
      
      Cr-Commit-Position: refs/heads/master@{#31997}
      60e7ea8a
  21. 09 Nov, 2015 1 commit
    • fedor's avatar
      binary-operator-reducer: reduce mul+div(shift) · 461e5b49
      fedor authored
      Reduction Input:
      
          ChangeInt32ToFloat64=>          TruncateFloat64ToInt32
                               Float64Mul=>
          ChangeInt32ToFloat64=>          Float64Div=>TruncateFloat64ToInt32
      
      Output:
      
               =>  TruncateInt64ToInt32
      Int64Mul
               =>  Int64Shr => TruncateInt64ToInt32
      
      Test code:
      
          function mul(a, b) {
            var l = a & 0x3ffffff;
            var h = b & 0x3ffffff;
            var m = l * h;
      
            var rl = m & 0x3ffffff;
            var rh = (m / 0x4000000) | 0;
      
            return rl | rh;
          }
      
          mul(1, 2);
          var a0 = mul(0x3ffffff, 0x3ffffff);
          mul(0x0, 0x0);
          %OptimizeFunctionOnNextCall(mul);
          var a1 = mul(0x3ffffff, 0x3ffffff);
      
          print(a0 + ' == ' + a1);
      
      BUG=
      R=mstarzinger@chromium.org
      
      Review URL: https://codereview.chromium.org/1350223006
      
      Cr-Commit-Position: refs/heads/master@{#31899}
      461e5b49
  22. 22 Oct, 2015 1 commit
  23. 17 Oct, 2015 1 commit
    • jarin's avatar
      [turbofan] Redundant branch elimination. · 106aecf2
      jarin authored
      Removes a branch that checks for a condition that has been checked on dominators of the branch.
      
      This introduces a new reducer that propagates the list of checked conditions (and their boolean values) through the control flow graph. If it encounters a branch checking a condition with a known value, the branch is eliminated.
      
      The analysis relies on loops being reducible: if a condition has been checked on all paths to loop entry, then it is checked in the loop (regardless what of the conditions checked inside the loop).
      
      The implementation is fairly naive and could be improved:
      
      - all the operation on the condition lists could be made allocation-free when revisited.
      
      - we could try to use a map structure rather than a linked list (to make
      lookups faster).
      
      - the merging of control flow could be changed to take into account
        conditions from non-dominating paths (as long as all paths check
        the condition).
      
      Review URL: https://codereview.chromium.org/1376293005
      
      Cr-Commit-Position: refs/heads/master@{#31347}
      106aecf2
  24. 08 Oct, 2015 1 commit
  25. 05 Oct, 2015 1 commit
  26. 02 Oct, 2015 2 commits
    • danno's avatar
      Revert of [swarming] Isolate v8 testing. (patchset #8 id:140001 of... · 280a6f8e
      danno authored
      Revert of [swarming] Isolate v8 testing. (patchset #8 id:140001 of https://codereview.chromium.org/1380593002/ )
      
      Reason for revert:
      Prime suspect in breakage of V8 Linux -- no snap
      
      Original issue's description:
      > [swarming] Isolate v8 testing.
      >
      > Add gyp support and isolates for default test suites.
      > Add two default isolates, one (default) for using the
      > test suite collection we call "default" on the bots. One
      > (developer_default) for also supporting the way developers
      > call the driver (i.e. without argument, which includes
      > the unittests).
      >
      > BUG=chromium:535160
      > LOG=n
      >
      > Committed: https://crrev.com/9bd83f58f29ab0c7c5b71b00bcb1df3a9e641f05
      > Cr-Commit-Position: refs/heads/master@{#31081}
      
      TBR=tandrii@chromium.org,jochen@chromium.org,maruel@chromium.org,machenbach@chromium.org
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=chromium:535160
      
      Review URL: https://codereview.chromium.org/1370993008
      
      Cr-Commit-Position: refs/heads/master@{#31084}
      280a6f8e
    • machenbach's avatar
      [swarming] Isolate v8 testing. · 9bd83f58
      machenbach authored
      Add gyp support and isolates for default test suites.
      Add two default isolates, one (default) for using the
      test suite collection we call "default" on the bots. One
      (developer_default) for also supporting the way developers
      call the driver (i.e. without argument, which includes
      the unittests).
      
      BUG=chromium:535160
      LOG=n
      
      Review URL: https://codereview.chromium.org/1380593002
      
      Cr-Commit-Position: refs/heads/master@{#31081}
      9bd83f58
  27. 28 Sep, 2015 1 commit
  28. 25 Sep, 2015 1 commit
  29. 10 Sep, 2015 1 commit