1. 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
  2. 09 Jan, 2017 2 commits
  3. 06 Jan, 2017 1 commit
  4. 05 Jan, 2017 1 commit
  5. 22 Dec, 2016 3 commits
  6. 21 Dec, 2016 2 commits
    • mvstanton's avatar
      [TypeFeedbackVector] Root literal arrays in function literals slots · 93df0940
      mvstanton authored
      Literal arrays and feedback vectors for a function can be garbage
      collected if we don't have a rooted closure for the function, which
      happens often. It's expensive to come back from this (recreating
      boilerplates and gathering feedback again), and the cost is
      disproportionate if the function was inlined into optimized code.
      
      To guard against losing these arrays when we need them, we'll now
      create literal arrays when creating the feedback vector for the outer
      closure, and root them strongly in that vector.
      
      BUG=v8:5456
      
      Review-Url: https://codereview.chromium.org/2504153002
      Cr-Commit-Position: refs/heads/master@{#41893}
      93df0940
    • jgruber's avatar
      [regexp] Remove IsRegExp intrinsic · c9cb94a0
      jgruber authored
      The two remaining uses of this intrinsic in debug.js and mirrors.js now
      simply rely on the runtime function.
      
      BUG=v8:5339
      
      Review-Url: https://codereview.chromium.org/2591923003
      Cr-Commit-Position: refs/heads/master@{#41892}
      c9cb94a0
  7. 16 Dec, 2016 1 commit
  8. 05 Dec, 2016 1 commit
  9. 29 Nov, 2016 1 commit
    • mstarzinger's avatar
      [fullcodegen] Remove with-statement support. · 957f3f10
      mstarzinger authored
      This removes support for dynamic scoping via with-statement constructs
      from the {FullCodeGenerator}. Consequently optimized code containing
      such constructs must use the {BytecodeGraphBuilder} and can no longer
      use the {AstGraphBuilder} for graph building.
      
      R=rmcilroy@chromium.org
      BUG=v8:5657
      
      Review-Url: https://codereview.chromium.org/2533283002
      Cr-Commit-Position: refs/heads/master@{#41365}
      957f3f10
  10. 28 Nov, 2016 1 commit
  11. 25 Nov, 2016 2 commits
  12. 24 Nov, 2016 1 commit
  13. 02 Nov, 2016 2 commits
    • verwaest's avatar
      Thread decls-list through Declaration using a ThreadedList · 5a18685e
      verwaest authored
      This reduces per-scope overhead from minimally 6 words to 2 words, with one additional pointer per entry, rather than an average of 2 per entry for larger-than-4 element lists. For temp zone parsed functions it additionally makes the declaration-list actually freeable.
      
      This introduces ThreadedList to implement the details of dealing with such a list.
      
      BUG=v8:5209
      
      Review-Url: https://codereview.chromium.org/2457393003
      Cr-Commit-Position: refs/heads/master@{#40703}
      5a18685e
    • bmeurer's avatar
      [compiler] Sanitize IC counts for vector based ICs. · 5ef1bddf
      bmeurer authored
      All vector ICs use the TypeFeedbackVector::ComputeCounts method now,
      while the remaining patching ICs still use the traditional way of
      counting on the TypeFeedbackInfo hanging off the fullcodegen code
      object. This fixes the problem that counts were sometimes off.
      
      Drive-by-fix: Move FullCodeGenerator::CallIC to fullcodegen.cc.
      
      R=yangguo@chromium.org
      
      Review-Url: https://codereview.chromium.org/2472653002
      Cr-Commit-Position: refs/heads/master@{#40690}
      5ef1bddf
  14. 25 Oct, 2016 1 commit
    • jgruber's avatar
      [regexp] Remove unused code · 77ddcfb3
      jgruber authored
      This CL removes code that is now unused since the port of regexp.js has been
      completed. Removed functions / classes are:
      
      * regexp.js (GetSubstitution moved to string.js)
      * RegExpConstructResult stub
      * RegExpFlags intrinsic
      * RegExpSource intrinsic
      * RegExpInitializeAndCompile runtime function
      
      BUG=v8:5339
      
      Review-Url: https://codereview.chromium.org/2448463002
      Cr-Commit-Position: refs/heads/master@{#40547}
      77ddcfb3
  15. 24 Oct, 2016 1 commit
    • adamk's avatar
      [full-codegen] Eliminate unnecessary hole checks for stores · 231c8ac0
      adamk authored
      Loads already used source position elimination to avoid unnecessary hole checks,
      but for reasons unknown stores did not. This CL corrects that, making full-codegen's
      hole elimination equivalent to ignition's.
      
      Also introduced a HoleCheckMode enum class to avoid more bool flags and updated
      VariableProxy and BytecodeGenerator appropriately.
      
      Review-Url: https://codereview.chromium.org/2441543005
      Cr-Commit-Position: refs/heads/master@{#40522}
      231c8ac0
  16. 20 Oct, 2016 1 commit
    • adamk's avatar
      [ignition] Eliminate hole checks where statically possible for loads and stores · 35a3ccbf
      adamk authored
      Move hole check logic from full-codegen into scope analysis, and store the
      "needs hole check" bit on VariableProxy. This makes it easy to re-use in
      any backend: it will be trivial to extend the use of this logic in, e.g.,
      full-codegen variable stores.
      
      While changing the signatures of the variable loading/storing methods in
      Ignition, I took the liberty of replacing the verb "Visit" with "Build", since these
      are not part of AST visiting.
      
      BUG=v8:5460
      
      Review-Url: https://chromiumcodereview.appspot.com/2411873004
      Cr-Commit-Position: refs/heads/master@{#40479}
      35a3ccbf
  17. 18 Oct, 2016 1 commit
  18. 28 Sep, 2016 1 commit
  19. 26 Sep, 2016 2 commits
    • bmeurer's avatar
      Revert of [compiler] Properly guard the speculative optimizations for... · b9cdb630
      bmeurer authored
      Revert of [compiler] Properly guard the speculative optimizations for instanceof. (patchset #3 id:40001 of https://codereview.chromium.org/2370693002/ )
      
      Reason for revert:
      Tanks EarleyBoyer.
      
      Original issue's description:
      > [compiler] Properly guard the speculative optimizations for instanceof.
      >
      > Add a general feedback slot for instanceof similar to what we already have
      > for for-in, which basically has a fast (indicated by the uninitialized
      > sentinel) and a slow (indicated by the megamorphic sentinel) mode. Now
      > we can only take the fast path when the feedback slot says it hasn't
      > seen any funky inputs and nothing funky appeared in the prototype chain.
      > In the TurboFan code we also deoptimize whenever we see a funky object
      > (i.e. a proxy or an object that requires access checks) in the prototype
      > chain (similar to what Crankshaft already did).
      >
      > Drive-by-fix: Also make Crankshaft respect the mode and therefore
      > address the deopt loop in Crankshaft around instanceof.
      >
      > We might want to introduce an InstanceOfIC mechanism at some point and
      > track the map of the right-hand side.
      >
      > BUG=v8:5267
      > R=mvstanton@chromium.org
      >
      > Committed: https://crrev.com/a0484bc6116ebc2b855de87d862945e2ae07169b
      > Cr-Commit-Position: refs/heads/master@{#39718}
      
      TBR=mvstanton@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:5267
      
      Review-Url: https://codereview.chromium.org/2365223003
      Cr-Commit-Position: refs/heads/master@{#39736}
      b9cdb630
    • bmeurer's avatar
      [compiler] Properly guard the speculative optimizations for instanceof. · a0484bc6
      bmeurer authored
      Add a general feedback slot for instanceof similar to what we already have
      for for-in, which basically has a fast (indicated by the uninitialized
      sentinel) and a slow (indicated by the megamorphic sentinel) mode. Now
      we can only take the fast path when the feedback slot says it hasn't
      seen any funky inputs and nothing funky appeared in the prototype chain.
      In the TurboFan code we also deoptimize whenever we see a funky object
      (i.e. a proxy or an object that requires access checks) in the prototype
      chain (similar to what Crankshaft already did).
      
      Drive-by-fix: Also make Crankshaft respect the mode and therefore
      address the deopt loop in Crankshaft around instanceof.
      
      We might want to introduce an InstanceOfIC mechanism at some point and
      track the map of the right-hand side.
      
      BUG=v8:5267
      R=mvstanton@chromium.org
      
      Review-Url: https://codereview.chromium.org/2370693002
      Cr-Commit-Position: refs/heads/master@{#39718}
      a0484bc6
  20. 24 Sep, 2016 1 commit
  21. 23 Sep, 2016 3 commits
  22. 06 Sep, 2016 2 commits
    • bakkot's avatar
      Split the AST representation of class properties from object properties. · 7bc200c7
      bakkot authored
      This introduces ClassLiteralProperty and a supertype LiteralProperty of
      it and ObjectLiteralProperty. It also splits the parsing of the two.
      This substiantially clarifies some logic, especially as classes
      continue to evolve, and is also about a 2% performance improvement to
      parsing either kind of property (since no work is wasted on logic
      only necessary for the other kind). Also, it saves a word on
      ObjectLiteralProperties.
      
      Review-Url: https://codereview.chromium.org/2302643002
      Cr-Commit-Position: refs/heads/master@{#39219}
      7bc200c7
    • marja's avatar
      Include only stuff you need, part 8: Fix debug.h -> liveedit.h. · 51a3ffd9
      marja authored
      Rebuilding (after touching certain files) is crazy slow because
      includes are out of control.
      
      The (last remaining) offending include path is: ast.h <- liveedit.h <-
      debug.h <- src/x64/assembler-whatever-port-inl.h <-
      src/macro-assembler.h <- everything possible
      
      With this CL, the rebuild steps needed when touching ast-value-factory.h
      drops from 365 to 181.
      
      BUG=v8:5294
      TBR=bmeurer@chromium.org
      
      Review-Url: https://codereview.chromium.org/2316443002
      Cr-Commit-Position: refs/heads/master@{#39195}
      51a3ffd9
  23. 05 Sep, 2016 1 commit
  24. 31 Aug, 2016 1 commit
  25. 25 Aug, 2016 1 commit
    • rmcilroy's avatar
      [Compiler] Add compile operations to CompilerDispatcherJob. · c2d2d4d1
      rmcilroy authored
      Adds compile operations to the CompilerDispatcherJob interface. As such,
      introduces Compiler::PrepareUnoptimizedCompilationJob and updates the
      unoptimized compilation path to use CompilationJobs. Also unifies
      FinalizeCompilationJob to deal with both optimized and unoptimized
      compilation jobs.
      
      A dummy FullCodegenCompilationJob is also introduced, where all the work
      is done in the ExecuteJob phase, which cannot be run on a
      background thread.
      
      BUG=v8:5203
      
      Review-Url: https://codereview.chromium.org/2251713002
      Cr-Commit-Position: refs/heads/master@{#38897}
      c2d2d4d1
  26. 17 Aug, 2016 1 commit
    • rmcilroy's avatar
      Avoid accessing Isolate in source position logging. · b8b4a443
      rmcilroy authored
      Now that all backends use the source position builder to record source
      positions, simplify the code line logging events to take a source
      position table on code creation. This means that the source position
      table builder no longer needs to access the isolate until the table is
      generated. This is required for off-thread bytecode generation.
      
      BUG=v8:5203
      
      Review-Url: https://codereview.chromium.org/2248673002
      Cr-Commit-Position: refs/heads/master@{#38676}
      b8b4a443
  27. 25 Jul, 2016 1 commit
  28. 22 Jul, 2016 1 commit
    • yangguo's avatar
      [debug] use catch prediction flag for promise rejections. · 6d0a4202
      yangguo authored
      This is in preparation to implementing exception prediction for async
      functions.  Each handler table entry can now predict "caught", "uncaught", or
      "promise". The latter indicates that the exception will lead to a promise
      rejection.
      
      To mark the relevant try-catch blocks, we add a new native syntax.
      try { } %catch (e) { } indicates a TryCatchStatement with the "promise"
      prediction.
      
      The previous implementation of using the function to tell the relevant
      try-catch apart from inner try-catch blocks will not work for async functions
      since these can have inner try-catch blocks inside the same function.
      
      BUG=v8:5167
      
      Review-Url: https://codereview.chromium.org/2161263003
      Cr-Commit-Position: refs/heads/master@{#37966}
      6d0a4202
  29. 15 Jul, 2016 1 commit
    • verwaest's avatar
      Templatize AstVisitor with its subclass · ebf166df
      verwaest authored
      This replaces the vtable on AstNode with a NodeType tag. The visitors replace double dispatch with a single switch over the NodeType.
      
      For now, visitors with subclasses still have virtual methods themselves. We should probably specialize them later as well.
      
      The uint8_t NodeType allows us to better pack memory, saving 8-16 bytes on many AST nodes (with additional packing that I'll do in a follow-up CL)
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2142233003
      Cr-Commit-Position: refs/heads/master@{#37788}
      ebf166df
  30. 12 Jul, 2016 1 commit