1. 16 Sep, 2016 21 commits
    • 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
    • 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 19 commits