1. 17 Oct, 2016 4 commits
  2. 14 Oct, 2016 1 commit
    • jgruber's avatar
      [regexp] Turn last match info into a simple FixedArray · f60a7c4f
      jgruber authored
      Now that all accesses to the last match info are in C++ and TF code, we can
      finally turn the last match info into a FixedArray. Similar to the ArrayList,
      it uses its first field to store its length and grows dynamically in amortized
      O(1) time.
      
      Unlike previously, this means that the last match info pointer stored on the
      context can actually change (in case the FixedArray needs to grow).
      
      BUG=v8:5339
      
      Review-Url: https://codereview.chromium.org/2415103002
      Cr-Commit-Position: refs/heads/master@{#40308}
      f60a7c4f
  3. 13 Oct, 2016 3 commits
    • jgruber's avatar
      [regexp] Port remaining JS functions in regexp.js · a10b4712
      jgruber authored
      This ports RegExpInitialize, IsRegExp, InternalMatch and InternalReplace to C++
      / TurboFan. InternalMatch is in TurboFan because it calls RegExpExecStub and
      needs to construct a RegExpResult (which are, respectively, a PlatformStub and
      a CodeStubAssembler function).
      
      Except for LastMatchInfo (and GetSubstitution, which could be moved to string.js
      anytime), regexp.js is now completely empty.
      
      BUG=v8:5339
      
      Review-Url: https://codereview.chromium.org/2409513003
      Cr-Commit-Position: refs/heads/master@{#40277}
      a10b4712
    • neis's avatar
      [modules] Implement @@iterator on namespace objects. · dafe6867
      neis authored
      As part of this, introduce a new JSObject for iterating over the elements of a
      FixedArray.
      
      R=adamk@chromium.org,bmeurer@chromium.org
      TBR=ulan@chromium.org
      BUG=v8:1569
      
      Review-Url: https://codereview.chromium.org/2407423002
      Cr-Commit-Position: refs/heads/master@{#40265}
      dafe6867
    • jgruber's avatar
      [regexp] Port RegExp.prototype[@@replace] · 33a4faa4
      jgruber authored
      This moves the implementation of @@replace from regexp.js to builtins-regexp.cc
      (the TurboFan fast path) and runtime-regexp.cc (slow path). The fast path
      handles all cases in which the regexp itself is an unmodified JSRegExp
      instance, the given 'replace' argument is not callable and does not contain any
      '$' characters (i.e. we are doing a string replacement).
      
      BUG=v8:5339
      
      Review-Url: https://codereview.chromium.org/2398423002
      Cr-Commit-Position: refs/heads/master@{#40253}
      33a4faa4
  4. 11 Oct, 2016 1 commit
  5. 10 Oct, 2016 1 commit
  6. 07 Oct, 2016 4 commits
  7. 05 Oct, 2016 5 commits
  8. 04 Oct, 2016 2 commits
  9. 30 Sep, 2016 4 commits
    • rmcilroy's avatar
      [Test] Don't call deprecated readdir_r in generate-bytecode-expectations. · 38c57c5d
      rmcilroy authored
      Review-Url: https://codereview.chromium.org/2385653002
      Cr-Commit-Position: refs/heads/master@{#39911}
      38c57c5d
    • rmcilroy's avatar
      [Interpreter] Replace BytecodeRegisterAllocator with a simple bump pointer. · 27fe988b
      rmcilroy authored
      There are only a few occasions where we allocate a register in an outer
      expression allocation scope, which makes the costly free-list approach
      of the BytecodeRegisterAllocator unecessary. This CL replaces all
      occurrences with moves to the accumulator and stores to a register
      allocated in the correct scope. By doing this, we can simplify the
      BytecodeRegisterAllocator to be a simple bump-pointer allocator
      with registers released in the same order as allocated.
      
      The following changes are also made:
       - Make BytecodeRegisterOptimizer able to use registers which have been
         unallocated, but not yet reused
       - Remove RegisterExpressionResultScope and rename
         AccumulatorExpressionResultScope to ValueExpressionResultScope
       - Introduce RegisterList to represent consecutive register
         allocations, and use this for operands to call bytecodes.
      
      By avoiding the free-list handling, this gives another couple of
      percent on CodeLoad.
      
      BUG=v8:4280
      
      Review-Url: https://codereview.chromium.org/2369873002
      Cr-Commit-Position: refs/heads/master@{#39905}
      27fe988b
    • neis's avatar
      Reland: [modules] Properly initialize declared variables. · 42724232
      neis authored
      Before evaluating a module, all variables declared at the top-level
      in _any_ of the modules in the dependency graph must be initialized.
      This is observable because a module A can access a variable imported
      from module B (e.g. a function) at a point when module B's body hasn't
      been evaluated yet.
      
      We achieve this by implementing modules internally as generators with
      two states (not initialized, initialized).
      
      R=adamk@chromium.org
      BUG=v8:1569
      CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_win_dbg
      
      Committed: https://crrev.com/f4dfb6fbe1cdd9a0f287a1a9c496e1f69f6f5d20
      Committed: https://crrev.com/8c52a411583e870bd5ed100864caa58f491c5d88
      Review-Url: https://codereview.chromium.org/2375793002
      Cr-Original-Original-Commit-Position: refs/heads/master@{#39871}
      Cr-Original-Commit-Position: refs/heads/master@{#39892}
      Cr-Commit-Position: refs/heads/master@{#39900}
      42724232
    • bmeurer's avatar
      Revert of Reland: [modules] Properly initialize declared variables. (patchset... · 669cb71e
      bmeurer authored
      Revert of Reland: [modules] Properly initialize declared variables. (patchset #6 id:100001 of https://codereview.chromium.org/2375793002/ )
      
      Reason for revert:
      Speculative revert for christmas tree
      
      Original issue's description:
      > Reland: [modules] Properly initialize declared variables.
      >
      > Before evaluating a module, all variables declared at the top-level
      > in _any_ of the modules in the dependency graph must be initialized.
      > This is observable because a module A can access a variable imported
      > from module B (e.g. a function) at a point when module B's body hasn't
      > been evaluated yet.
      >
      > We achieve this by implementing modules internally as generators with
      > two states (not initialized, initialized).
      >
      > R=adamk@chromium.org
      > BUG=v8:1569
      > CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_win_dbg
      >
      > Committed: https://crrev.com/f4dfb6fbe1cdd9a0f287a1a9c496e1f69f6f5d20
      > Committed: https://crrev.com/8c52a411583e870bd5ed100864caa58f491c5d88
      > Cr-Original-Commit-Position: refs/heads/master@{#39871}
      > Cr-Commit-Position: refs/heads/master@{#39892}
      
      TBR=adamk@chromium.org,mstarzinger@chromium.org,machenbach@chromium.org,neis@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:1569
      
      Review-Url: https://codereview.chromium.org/2387593002
      Cr-Commit-Position: refs/heads/master@{#39896}
      669cb71e
  10. 29 Sep, 2016 3 commits
    • neis's avatar
      Reland: [modules] Properly initialize declared variables. · 8c52a411
      neis authored
      Before evaluating a module, all variables declared at the top-level
      in _any_ of the modules in the dependency graph must be initialized.
      This is observable because a module A can access a variable imported
      from module B (e.g. a function) at a point when module B's body hasn't
      been evaluated yet.
      
      We achieve this by implementing modules internally as generators with
      two states (not initialized, initialized).
      
      R=adamk@chromium.org
      BUG=v8:1569
      CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_win_dbg
      
      Committed: https://crrev.com/f4dfb6fbe1cdd9a0f287a1a9c496e1f69f6f5d20
      Review-Url: https://codereview.chromium.org/2375793002
      Cr-Original-Commit-Position: refs/heads/master@{#39871}
      Cr-Commit-Position: refs/heads/master@{#39892}
      8c52a411
    • machenbach's avatar
      Revert of [modules] Properly initialize declared variables. (patchset #5... · 7496c9de
      machenbach authored
      Revert of [modules] Properly initialize declared variables. (patchset #5 id:80001 of https://codereview.chromium.org/2375793002/ )
      
      Reason for revert:
      Suspect for causing win64 debug problems:
      https://build.chromium.org/p/client.v8/builders/V8%20Win64%20-%20debug/builds/12646
      
      Original issue's description:
      > [modules] Properly initialize declared variables.
      >
      > Before evaluating a module, all variables declared at the top-level
      > in _any_ of the modules in the dependency graph must be initialized.
      > This is observable because a module A can access a variable imported
      > from module B (e.g. a function) at a point when module B's body hasn't
      > been evaluated yet.
      >
      > We achieve this by implementing modules internally as generators with
      > two states (not initialized, initialized).
      >
      > R=adamk@chromium.org
      > BUG=v8:1569
      >
      > Committed: https://crrev.com/f4dfb6fbe1cdd9a0f287a1a9c496e1f69f6f5d20
      > Cr-Commit-Position: refs/heads/master@{#39871}
      
      TBR=adamk@chromium.org,mstarzinger@chromium.org,neis@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:1569
      
      Review-Url: https://codereview.chromium.org/2379063002
      Cr-Commit-Position: refs/heads/master@{#39873}
      7496c9de
    • neis's avatar
      [modules] Properly initialize declared variables. · f4dfb6fb
      neis authored
      Before evaluating a module, all variables declared at the top-level
      in _any_ of the modules in the dependency graph must be initialized.
      This is observable because a module A can access a variable imported
      from module B (e.g. a function) at a point when module B's body hasn't
      been evaluated yet.
      
      We achieve this by implementing modules internally as generators with
      two states (not initialized, initialized).
      
      R=adamk@chromium.org
      BUG=v8:1569
      
      Review-Url: https://codereview.chromium.org/2375793002
      Cr-Commit-Position: refs/heads/master@{#39871}
      f4dfb6fb
  11. 26 Sep, 2016 3 commits
    • adamk's avatar
      [modules] Detect and throw exceptions for cyclic dependencies · b48eb569
      adamk authored
      Use an unordered_map<Module, unordered_set<String>> to keep track
      of visited Module/ExportName pairs during ResolveExport.
      
      This required adding a Hash() method to Module, which is accomplished
      by allocating a Symbol and storing it in the SharedFunctionInfo::name
      slot, then delegating the hash to that Symbol.
      
      Also added a helper method Module::shared() to easily get ahold of
      the SharedFunctionInfo and call it in the appropriate places instead
      of re-doing the ternary operator.
      
      BUG=v8:1569
      
      Review-Url: https://codereview.chromium.org/2367623004
      Cr-Commit-Position: refs/heads/master@{#39743}
      b48eb569
    • 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
  12. 23 Sep, 2016 2 commits
  13. 21 Sep, 2016 2 commits
  14. 20 Sep, 2016 4 commits
  15. 16 Sep, 2016 1 commit