1. 19 Sep, 2016 10 commits
  2. 18 Sep, 2016 5 commits
  3. 17 Sep, 2016 4 commits
  4. 16 Sep, 2016 21 commits
    • bakkot's avatar
      [AST] Add method to concatenate AstRawStrings · e68258bd
      bakkot authored
      Normally the parser just uses AstConsStrings to concatenate, but some
      types require an AstRawString. This patch adds an AstValueFactory
      method which produces one from two AstRawStrings.
      
      Review-Url: https://codereview.chromium.org/2348783002
      Cr-Commit-Position: refs/heads/master@{#39482}
      e68258bd
    • adamk's avatar
      [modules] Introduce v8::Module to the API and return it from CompileModule · aa6db9d9
      adamk authored
      R=neis@chromium.org
      BUG=v8:1569
      
      Review-Url: https://codereview.chromium.org/2347933002
      Cr-Commit-Position: refs/heads/master@{#39481}
      aa6db9d9
    • littledan's avatar
      async/await: Don't trigger uncaught rejection handlers on throwaway Promises · 61a6b6f2
      littledan authored
      This patch implements a bug fix to the async/await specification described
      at https://github.com/tc39/ecma262/pull/692#issuecomment-247488411
      Namely, the intermediate values of Promises may be rejected, and they do
      not have .then called on them anymore (now that the memory leak is fixed),
      but they do not correspond do unhandled rejections. This change has been
      tested manually with integration with Blink; once it is checked in and
      rolled, then further tests can be added on the Blink side for the uncaught
      rejection handler and async/await.
      
      BUG=v8:4483
      
      Review-Url: https://codereview.chromium.org/2338273007
      Cr-Commit-Position: refs/heads/master@{#39480}
      61a6b6f2
    • littledan's avatar
      Fix async/await memory leak · a0ba18e9
      littledan authored
      This patch closes a memory leak in async/await where the desugaring
      was creating a situation analagous to that described in v8:5002.
      Intermediate Promises were being kept alive, so a long-running loop
      would cause linear memory usage on the heap. This patch returns
      undefined to the 'then' callback passed into PerformPromiseThen
      in order to avoid this hazard. Test expectations are fixed to remove
      expecting extraneous events which occurred on Promises that are
      now not given unnecessarily complex resolution paths before being
      thrown away.
      
      BUG=v8:5390
      
      Review-Url: https://codereview.chromium.org/2334323006
      Cr-Commit-Position: refs/heads/master@{#39479}
      a0ba18e9
    • martyn.capewell's avatar
      [turbofan] Reduce some Float64 division to multiplication · 5ae2d0e5
      martyn.capewell authored
      For denominators that are powers of two, replace Float64 division with
      multiplication by the reciprocal.
      
      Additionally, replace division by -1 with negation, and multiplication by two
      with addition.
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2347573002
      Cr-Commit-Position: refs/heads/master@{#39478}
      5ae2d0e5
    • neis's avatar
      [modules] Turn JSModule into Module. · 7c05d8a4
      neis authored
      Rename JSModule to Module and make it a Struct rather than a JSObject.  We will
      later add a separate JSModuleNamespace object to implement the 'import * as foo'
      syntax.
      
      BUG=v8:1569
      
      Review-Url: https://codereview.chromium.org/2345823002
      Cr-Commit-Position: refs/heads/master@{#39477}
      7c05d8a4
    • ishell's avatar
      [stubs] Port StoreTransitionStub and ElementsTransitionAndStoreStub to TurboFan. · 130d9893
      ishell authored
      This CL also cleans up related interface descriptors:
      1) unused StoreTransitionDescriptor is removed and VectorStoreTransitionDescriptor is
      renamed to StoreTransitionDescriptor.
      2) on ia32/x87 architectures slot and vector are passed on the stack (dispatcher/handlers
      cleanup will be addressed in a separate CL).
      
      These two stub ports have to be combined in one CL because:
      1) without changing the StoreTransitionDescriptor TF was not able to compile them
      on ia32/x87 (because of lack of registers),
      2) it was not possible to change the descriptor first because Crankshaft was not able
      to deal with the stack allocated parameters in case of a stub failure.
      
      TBR=jkummerow@chromium.org
      BUG=v8:5269
      
      Review-Url: https://codereview.chromium.org/2313093002
      Cr-Commit-Position: refs/heads/master@{#39476}
      130d9893
    • vogelheim's avatar
      Revert of [Tracing] Remove unnecessary memory allocation in runtime call... · eb7ba290
      vogelheim authored
      Revert of [Tracing] Remove unnecessary memory allocation in runtime call stats. (patchset #1 id:1 of https://codereview.chromium.org/2342643004/ )
      
      Reason for revert:
      Revert because this breaks V8's roll into Chromium. ASAN complains about memory accesses in a particular unit test.
      
      Borked roll CL:
      https://codereview.chromium.org/2348833002/
      
      Reproduce breakage with:
      
      1, args.gn:
        v8_deprecation_warnings = true
        use_goma = true
        is_asan = true
      2, ninja -C out/... content_browsertests
      3, out/.../content_browsertests --gtest_filter=V8SamplingProfilerTest.*
      
      Original issue's description:
      > [Tracing] Remove unnecessary memory allocation in runtime call stats.
      >
      > Previously we didn't implement TRACE_STR_COPY when we write trace events to
      > file, which causes us to allocate a growing independent memory chunk for dumped
      > runtime call stats table. Since we now have a fully functional TRACE_STR_COPY,
      > this memory allocation can be avoided, this patch removes it.
      >
      > BUG=v8:5089
      >
      > Committed: https://crrev.com/e1997bb7d780d12e3a89078e8dd652dcf1d90039
      > Cr-Commit-Position: refs/heads/master@{#39462}
      
      TBR=cbruni@chromium.org,fmeawad@chromium.org,lpy@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:5089
      
      Review-Url: https://codereview.chromium.org/2349593004
      Cr-Commit-Position: refs/heads/master@{#39475}
      eb7ba290
    • vogelheim's avatar
      Also build parsing/test-scanner-streams. · 8d007434
      vogelheim authored
      crrev.com/2339933002 and crrev.com/2314663002 were overlapping, so
      this slipped through the cracks.
      
      R=jochen@chromium.org
      BUG=v8:4947, chromium:646794
      
      Review-Url: https://codereview.chromium.org/2343093002
      Cr-Commit-Position: refs/heads/master@{#39474}
      8d007434
    • leszeks's avatar
      [interpreter] Add a fast path for dynamic local load · 66d2e1fc
      leszeks authored
      Adds a fast path for loading DYNAMIC_LOCAL variables, which are lookup
      variables that can be context loaded, without calling the runtime, as
      long as there was no context extension by a sloppy eval along their
      context chain.
      
      BUG=v8:5263
      
      Review-Url: https://codereview.chromium.org/2343633002
      Cr-Commit-Position: refs/heads/master@{#39473}
      66d2e1fc
    • mstarzinger's avatar
      [turbofan] Ensure AstGraphBuilder::CheckOsrEntry hits once. · f8ed6fb1
      mstarzinger authored
      The predicate in question should only trigger once and hence the stack
      height should not be updated incrementally. This puts checks into place
      ensuring this holds.
      
      R=bmeurer@chromium.org
      
      Review-Url: https://codereview.chromium.org/2333923008
      Cr-Commit-Position: refs/heads/master@{#39472}
      f8ed6fb1
    • marja's avatar
      Revert of Preparse inner functions. (patchset #23 id:440001 of... · 7de8639e
      marja authored
      Revert of Preparse inner functions. (patchset #23 id:440001 of https://codereview.chromium.org/2322243002/ )
      
      Reason for revert:
      This approach is not good - breaks when we recompile.
      
      Original issue's description:
      > Preparse inner functions.
      >
      > This is an overly pessimistic approach where PreParser only keeps
      > track of unresolved variables, but doesn't declare anything. This
      > will result in context-allocating variables in the outer function
      > unnecessarily, if the variable names clash with variable names
      > used by the inner function (even if the variables are not the
      > same). However, we have been unable to prove that this approach
      > wouldn't be good enough for the practical purposes.
      >
      > Committed: https://crrev.com/e1341ca8fa486bb2c9e4236672a64ec7756a164d
      > Cr-Commit-Position: refs/heads/master@{#39469}
      
      TBR=adamk@chromium.org,vogelheim@chromium.org,nikolaos@chromium.org,nednguyen@google.com
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      
      Review-Url: https://codereview.chromium.org/2349473004
      Cr-Commit-Position: refs/heads/master@{#39471}
      7de8639e
    • mythria's avatar
      [Interpreter] Adds stackcheck in InterpreterPushArgsAndCall/Construct builtins. · 7f3d15aa
      mythria authored
      In ignition, arguments to function calls and function constructors are
      pushed onto the stack before calling the function. It is required to check
      that stack does not overflow when pushing the arguments.
      
      BUG=v8:4280
      LOG=N
      
      Review-Url: https://codereview.chromium.org/2335513004
      Cr-Commit-Position: refs/heads/master@{#39470}
      7f3d15aa
    • marja's avatar
      Preparse inner functions. · e1341ca8
      marja authored
      This is an overly pessimistic approach where PreParser only keeps
      track of unresolved variables, but doesn't declare anything. This
      will result in context-allocating variables in the outer function
      unnecessarily, if the variable names clash with variable names
      used by the inner function (even if the variables are not the
      same). However, we have been unable to prove that this approach
      wouldn't be good enough for the practical purposes.
      
      Review-Url: https://codereview.chromium.org/2322243002
      Cr-Commit-Position: refs/heads/master@{#39469}
      e1341ca8
    • bmeurer's avatar
      [turbofan] Constant-fold some ObjectIs checks based on feedback type. · 347931e6
      bmeurer authored
      During feedback typing (in SimplifiedLowering) we might be able to
      constant-fold a bunch of ObjectIs<Type> predicates, i.e. because we
      took type feedback on the input or we narrowed the type of a Phi
      because of type feedback.
      
      R=mvstanton@chromium.org
      BUG=v8:5267,v8:5270
      
      Review-Url: https://codereview.chromium.org/2342283002
      Cr-Commit-Position: refs/heads/master@{#39468}
      347931e6
    • nikolaos's avatar
      [parser] Refactor of Parse*Statement*, part 7 · 7b2297c9
      nikolaos authored
      This patch moves the following parsing method to ParserBase:
      
      - ParseTryStatement
      
      R=adamk@chromium.org, marja@chromium.org
      BUG=
      LOG=N
      
      Review-Url: https://codereview.chromium.org/2339453002
      Cr-Commit-Position: refs/heads/master@{#39467}
      7b2297c9
    • mstarzinger's avatar
      [compiler] Make Compiler::EnsureBytecode respect filter. · 6a72f373
      mstarzinger authored
      This ensures that {Compiler::EnsureBytecode} fails gracefully in case
      the --ignition-filter flag prevents generation of bytecode for a certain
      set of functions. This can be triggered via inlining.
      
      R=rmcilroy@chromium.org
      
      Review-Url: https://codereview.chromium.org/2340293002
      Cr-Commit-Position: refs/heads/master@{#39466}
      6a72f373
    • nikolaos's avatar
      [parser] Fix unfinalized block scope in non-lexical for each · be206664
      nikolaos authored
      In release mode, statements like:
      
          var i;
          for (i of [0]) { let j; debugger; }
      
      would end up with one more block scope than in the debug modes.
      
      R=adamk@chromium.org, marja@chromium.org
      BUG=
      LOG=N
      
      Review-Url: https://codereview.chromium.org/2347633002
      Cr-Commit-Position: refs/heads/master@{#39465}
      be206664
    • vogelheim's avatar
      Rework scanner-character-streams. · 642d6d31
      vogelheim authored
      - Smaller, more consistent streams API (Advance, Back, pos, Seek)
      - Remove implementations from the header, in favor of creation functions.
      
      Observe:
      - Performance:
        - All Utf16CharacterStream methods have an inlinable V8_LIKELY w/ a
          body of only a few instructions. I expect most calls to end up there.
        - There used to be performance problems w/ bookmarking, particularly
          with copying too much data on SetBookmark w/ UTF-8 streaming streams.
          All those copies are gone.
        - The old streaming streams implementation used to copy data even for
          2-byte input. It no longer does.
        - The only remaining 'slow' method is the Seek(.) slow case for utf-8
          streaming streams. I don't expect this to be called a lot; and even if,
          I expect it to be offset by the gains in the (vastly more frequent)
          calls to the other methods or the 'fast path'.
        - If it still bothers us, there are several ways to speed it up.
      - API & code cleanliness:
        - I want to remove the 'old' API in a follow-up CL, which should mostly
          delete code, or replace it 1:1.
        - In a 2nd follow-up I want to delete much of the UTF-8 handling in Blink
          for streaming streams.
        - The "bookmark" is now always implemented (and mostly very fast), so we
          should be able to use it for more things.
      - Testing & correctness:
        - The unit tests now cover all stream implementations,
          and are pretty good and triggering all the edge cases.
        - Vastly more DCHECKs of the invariants.
      
      BUG=v8:4947
      
      Review-Url: https://codereview.chromium.org/2314663002
      Cr-Commit-Position: refs/heads/master@{#39464}
      642d6d31
    • mtrofin's avatar
      [wasm] additional serialization test · d4ec15f9
      mtrofin authored
      Ensure we can serialize a wasm compiled module even after it was
      instantiated a few times.
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2339933003
      Cr-Commit-Position: refs/heads/master@{#39463}
      d4ec15f9
    • lpy's avatar
      [Tracing] Remove unnecessary memory allocation in runtime call stats. · e1997bb7
      lpy authored
      Previously we didn't implement TRACE_STR_COPY when we write trace events to
      file, which causes us to allocate a growing independent memory chunk for dumped
      runtime call stats table. Since we now have a fully functional TRACE_STR_COPY,
      this memory allocation can be avoided, this patch removes it.
      
      BUG=v8:5089
      
      Review-Url: https://codereview.chromium.org/2342643004
      Cr-Commit-Position: refs/heads/master@{#39462}
      e1997bb7