1. 16 Sep, 2016 14 commits
    • 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
    • v8-autoroll's avatar
      Update V8 DEPS. · e0c98799
      v8-autoroll authored
      Rolling v8/build to 3f47a5e106127ae4e2567d64c615dc706054c819
      
      Rolling v8/tools/clang to bd7e80b254a93d0a5cd8ecb994e47b1c827e253c
      
      TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org
      
      Review-Url: https://codereview.chromium.org/2347783002
      Cr-Commit-Position: refs/heads/master@{#39461}
      e0c98799
    • bakkot's avatar
      Class fields, part 2 (desugaring) · 834aec33
      bakkot authored
      This is one part of a WIP implementation of the stage-2 proposal to add
      fields to classes: https://github.com/tc39/proposal-class-public-fields
      
      See design doc:
      https://docs.google.com/document/d/1WRtNm3ZLNJT1WVr8aq4RJuByYgfuAFAhj20LwTW6JVE/
      
      This adds the desugaring logic to the parser. It isn't usable without
      the (forthcoming) backend changes.
      
      BUG=v8:5367
      
      Review-Url: https://codereview.chromium.org/2316233004
      Cr-Commit-Position: refs/heads/master@{#39460}
      834aec33
    • bakkot's avatar
      Class fields, part 1 (parsing and infrastructure) · fe6b76d4
      bakkot authored
      This is one part of a WIP implementation of the stage-2 proposal to add
      fields to classes: https://github.com/tc39/proposal-class-public-fields
      
      See design doc:
      https://docs.google.com/document/d/1WRtNm3ZLNJT1WVr8aq4RJuByYgfuAFAhj20LwTW6JVE/
      
      This adds support for parsing fields in classes, including
      infrastructure. In particular, it adds:
      * Two booleans on function literal AST nodes
      * Two compiler hints on SharedFunctionInfos representing said bools
      * A new type of ClassLiteralProperty, FIELD
      * Parser support for the syntax
      * Syntax tests
      * A flag to enable it.
      
      Currently the fields are parsed and then droppped. Subsequent
      patches will add semantics, mostly by desugaring in the parser and
      the remainder in the non-crankshaft backends.
      
      BUG=v8:5367
      
      Review-Url: https://codereview.chromium.org/2315733003
      Cr-Commit-Position: refs/heads/master@{#39459}
      fe6b76d4
    • lpy's avatar
      Introduce PREPARE_FOR_EXECUTION_WITH_CONTEXT_IN_RUNTIME_CALL_STATS_SCOPE · 9df94139
      lpy authored
      Previously, macro like PREPARE_FOR_EXECUTION_WITH_CALLBACK will end up calling
      LOG_API, where we create a runtime call timer scope when we enable tracing with
      runtime call stats, however since the flag will be enabled after calling
      TRACE_EVENT_CALL_STATS_SCOPED, this will end up with incorrect timestamp. Thus,
      we introduce a new macro
      PREPARE_FOR_EXECUTION_WITH_CONTEXT_IN_RUNTIME_CALL_STATS_SCOPE, which will call
      TRACE_EVENT_CALL_STATS_SCOPED inside it.
      
      BUG=v8:5089
      
      Review-Url: https://codereview.chromium.org/2344723004
      Cr-Commit-Position: refs/heads/master@{#39458}
      9df94139
  2. 15 Sep, 2016 26 commits