1. 18 May, 2017 1 commit
  2. 12 May, 2017 1 commit
  3. 08 May, 2017 1 commit
    • Adam Klein's avatar
      Skip hole initialization of lexical variables when possible · ededfcd2
      Adam Klein authored
      This patch expands scope analysis to skip hole initialization
      when it can be determined statically that no hole checks will
      be generated at runtime.
      
      Two conditions must be met to safely eliminate hole initialization:
        - There must not exist a VariableProxy referencing this Variable
          whose HoleCheckMode is kRequired
        - The Variable must be stack allocated; any other allocation implies
          that it may be accessed from not-yet-analyzed scopes (other modules,
          inner functions, or eval code) and that code may require
          hole checks.
      
      The new logic required removing debug code in full-codegen which is
      now incorrect in some cases.
      
      Also fixed Variable's bitfield helpers to take no more space than needed.
      
      Bug: chromium:651637
      Change-Id: Ie5ac326af4e05b7a5c3c37cd4d0afba6a51a504d
      Reviewed-on: https://chromium-review.googlesource.com/494006
      Commit-Queue: Adam Klein <adamk@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#45170}
      ededfcd2
  4. 28 Apr, 2017 1 commit
  5. 20 Apr, 2017 1 commit
  6. 24 Mar, 2017 2 commits
  7. 22 Mar, 2017 1 commit
  8. 21 Mar, 2017 1 commit
  9. 14 Mar, 2017 1 commit
  10. 21 Feb, 2017 1 commit
  11. 17 Feb, 2017 1 commit
  12. 14 Feb, 2017 1 commit
  13. 13 Feb, 2017 5 commits
  14. 07 Feb, 2017 3 commits
  15. 06 Feb, 2017 1 commit
    • mvstanton's avatar
      [TypeFeedbackVector] Root feedback vectors at function literal site. · aea3ce3d
      mvstanton authored
      TypeFeedbackVectors are strongly rooted by a closure. However, in modern
      JavaScript closures are created and abandoned more freely. An important
      closure may not be present in the root-set at time of garbage collection,
      even though we've cached optimized code and use it regularly. For
      example, consider leaf functions in an event dispatching system. They may
      well be "hot," but tragically non-present when we collect the heap.
      
      Until now, we've relied on a weak root to cache the feedback vector in
      this case. Since there is no way to signal intent or relative importance,
      this weak root is as susceptible to clearing as any other weak root at
      garbage collection time.
      
      Meanwhile, the feedback vector has become more important. All of our
      ICs store their data there. Literal and regex boilerplates are stored there.
      If we lose the vector, then we not only lose optimized code built from
      it, we also lose the very feedback which allowed us to create that optimized
      code. Therefore it's vital to express that dependency through the root
      set.
      
      This CL does this by creating a strong link to a feedback
      vector at the instantiation site of the function closure.
      This instantiation site is in the code and feedback vector
      of the outer closure.
      
      BUG=v8:5456
      
      Review-Url: https://codereview.chromium.org/2674593003
      Cr-Commit-Position: refs/heads/master@{#42953}
      aea3ce3d
  16. 02 Feb, 2017 2 commits
    • bmeurer's avatar
      [stubs] Also port the CallICStub to CSA. · d68dfe86
      bmeurer authored
      Port the Call feedback machinery from the interpreter to the CallICStub
      as second step to unify the feedback collection. This removes a lot of
      hand-written native code, and makes the runtime miss handler obsolete.
      The next step will be to use the CallICStub from the interpreter as
      well.
      
      Drive-by-fix: Adjust CallIC/CallICTrampoline descriptors names.
      
      R=mvstanton@chromium.org
      BUG=v8:5049
      
      Review-Url: https://codereview.chromium.org/2670843002
      Cr-Commit-Position: refs/heads/master@{#42889}
      d68dfe86
    • bmeurer's avatar
      [stubs] Fix naming of CallIC and CallICTrampoline. · 9121f72a
      bmeurer authored
      Rename the CallIC factory method to CallICTrampoline and the
      CallICInOptimizedCode to CallIC to match the naming of the
      stubs and better reflect their functionality.
      
      R=yangguo@chromium.org
      
      Review-Url: https://codereview.chromium.org/2670073002
      Cr-Commit-Position: refs/heads/master@{#42876}
      9121f72a
  17. 30 Jan, 2017 1 commit
    • mvstanton's avatar
      [TypeFeedbackVector] Combine the literals array and the feedback vector. · 93f05b64
      mvstanton authored
      They have the same lifetime. It's a match!
      
      Both structures are native context dependent and dealt with (creation,
      clearing, gathering feedback) at the same time. By treating the spaces used
      for literal boilerplates as feedback vector slots, we no longer have to keep
      track of the materialized literal count elsewhere.
      
      A follow-on CL removes even more parser infrastructure related to this count.
      
      BUG=v8:5456
      
      Review-Url: https://codereview.chromium.org/2655853010
      Cr-Commit-Position: refs/heads/master@{#42771}
      93f05b64
  18. 27 Jan, 2017 1 commit
  19. 24 Jan, 2017 1 commit
    • mvstanton's avatar
      [TypeFeedbackVector] DeclareGlobals needs a literals array · d287c819
      mvstanton authored
      [RELAND with one change: until literal arrays are rooted in the outer
      feedback vector (coming in the next days), the runtime-scope.cc change
      is held off.]
      
      When a function is declared in global scope, the closure is created
      by the DeclareGlobals runtime service. It needs a pointer to the
      literals array, already allocated in the feedback vector. This
      fixes a bug where it's behavior wasn't in sync with CreateClosure,
      which accepts the literals from the vector.
      
      This enables a follow-on performance improvement in the CompileLazy
      builtin.
      
      BUG=680637
      
      Review-Url: https://codereview.chromium.org/2634283003
      Cr-Commit-Position: refs/heads/master@{#42620}
      d287c819
  20. 18 Jan, 2017 2 commits
    • ofrobots's avatar
      Revert remove dead hole check logic · 80234ee3
      ofrobots authored
      This reverts commits
      * 45c11887 "[fullcodegen] Remove dead hole check logic"
      * 2aaf217b "[crankshaft] Remove dead Variable hole-checking code"
      * f40a3817 "[crankshaft] Fix mips/mips64 build: remove unused variable"
      
      BUG=
      R=adamk@chromium.org,bmeurer@chromium.org,hablich@chromium.org
      
      Review-Url: https://codereview.chromium.org/2640793004
      Cr-Commit-Position: refs/heads/master@{#42476}
      80234ee3
    • mvstanton's avatar
      Back strongly rooted literals CLs out of the tree for branch cut · 80c9b69d
      mvstanton authored
      Due to outstanding performance issues, it's safer to revert these
      changes.
      
      Revert "PPC/s390: [TypeFeedbackVector] DeclareGlobals needs a literals array"
      Revert "[TypeFeedbackVector] DeclareGlobals needs a literals array"
      Revert "PPC/s390: [builtins] CompileLazy bailed out to the runtime entirely too often."
      Revert "[builtins] CompileLazy bailed out to the runtime entirely too often."
      
      Another CL is to follow that removes the main part of this work
      (after that revert, performance regressions should disappear.
      
      TBR=mstarzinger@chromium.org, leszeks@chromium.org, bmeurer@chromium.org
      BUG=680637
      
      Review-Url: https://codereview.chromium.org/2645543002
      Cr-Commit-Position: refs/heads/master@{#42456}
      80c9b69d
  21. 17 Jan, 2017 1 commit
    • mvstanton's avatar
      [TypeFeedbackVector] DeclareGlobals needs a literals array · b83c3d29
      mvstanton authored
      When a function is declared in global scope, the closure is created
      by the DeclareGlobals runtime service. It needs a pointer to the
      literals array, already allocated in the feedback vector. This
      fixes a bug where it's behavior wasn't in sync with CreateClosure,
      which accepts the literals from the vector.
      
      This enables a follow-on performance improvement in the CompileLazy
      builtin.
      
      BUG=680637
      
      Review-Url: https://codereview.chromium.org/2634283003
      Cr-Commit-Position: refs/heads/master@{#42408}
      b83c3d29
  22. 16 Jan, 2017 1 commit
  23. 11 Jan, 2017 1 commit
    • rmcilroy's avatar
      [compiler] Collect eager inner functions for compilation during renumbering. · a3052cfe
      rmcilroy authored
      This CL modifies the ast-numbering phase to collect function literals which
      should be compiled eagerly. This is then used to eagerly compile the inner
      functions before compiling the outer function. This will be used to queue
      compilation jobs on the CompilerDispatcher in a later CL.
      
      This CL moves the compilation of eager inner functions out of the
      GetSharedFunctionInfo function and instead compiles them explicitly. This
      simplifies GetSharedFunctionInfo and also means there is no need to pass a
      LazyCompilationMode to the function, so this concept has been removed.
      
      BUG=v8:5203,v8:5215
      
      Review-Url: https://codereview.chromium.org/2618553004
      Cr-Commit-Position: refs/heads/master@{#42221}
      a3052cfe
  24. 09 Jan, 2017 2 commits
  25. 06 Jan, 2017 1 commit
  26. 05 Jan, 2017 1 commit
    • gsathya's avatar
      [ESnext] Implement Object spread · a40b7172
      gsathya authored
      This patch adds parsing of spread object property.
      
      -- Changes ParsePropertyName to parse Token::ELLIPSIS.
      -- Throws if rest is encountered by setting a pattern error.
      -- Adds a new PropertyKind enum (SPREAD)
      -- Adds a new ObjectLiteralProperty::kind (SPREAD)
      -- Adds a new harmony-object-spread flag and protects the parser code
      with it.
      -- Adds a new runtime function called CopyDataProperties
      -- Does not add any support for this feature in fullcodegen.
      -- Ignition calls out to a runtime function CopyDataProperties to
      perform spread operation.
      -- Move FastAssign from builtins-objects.cc to objects.cc
      -- Refactor Builtin_ObjectAssign to use SetOrCopyDataProperties
      
      Object rest will be implemented in a follow on patch.
      
      BUG=v8:5549
      
      Review-Url: https://codereview.chromium.org/2606833002
      Cr-Commit-Position: refs/heads/master@{#42102}
      a40b7172
  27. 29 Dec, 2016 2 commits
  28. 22 Dec, 2016 1 commit
  29. 21 Dec, 2016 1 commit