1. 15 Mar, 2018 2 commits
    • Sathya Gunasekaran's avatar
      [numeric separator] Simplify error handling · e77eebfe
      Sathya Gunasekaran authored
      Pointing to the exact spot of the incorrect numeric separator seems
      clearer both in terms of the error itself, and the resulting code in
      scanner because we don't have to keep track of the start position.
      
      Previously, the error was:
        ➜ ./out.gn/x64.release/d8 --harmony-numeric-separator -e '0x1__1'
        unnamed:1: SyntaxError: Only one underscore is allowed as numeric separator
        0x1__1
        ^^^^
        SyntaxError: Only one underscore is allowed as numeric separator
      
      Now, the error is:
        ➜ ./out.gn/x64.release/d8 --harmony-numeric-separator -e '0x1__1'
        unnamed:1: SyntaxError: Only one underscore is allowed as numeric separator
        0x1__1
            ^
        SyntaxError: Only one underscore is allowed as numeric separator
      
      
      Bug: v8:7317
      Change-Id: I7df1b39816e51a97234da6ed0fca1bf8c0223c3e
      Reviewed-on: https://chromium-review.googlesource.com/962241
      Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
      Reviewed-by: 's avatarMathias Bynens <mathias@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51950}
      e77eebfe
    • Sathya Gunasekaran's avatar
      [numeric separator] Ban implicit octal support · 9c983910
      Sathya Gunasekaran authored
      Bug: v8:7317
      Change-Id: I20fb706c05852668a5a6ae8b69c150ae2e6b2f65
      Reviewed-on: https://chromium-review.googlesource.com/960901Reviewed-by: 's avatarMathias Bynens <mathias@chromium.org>
      Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51943}
      9c983910
  2. 08 Mar, 2018 1 commit
  3. 06 Mar, 2018 1 commit
  4. 01 Mar, 2018 2 commits
  5. 21 Feb, 2018 1 commit
  6. 17 Jan, 2018 1 commit
  7. 11 Dec, 2017 1 commit
  8. 31 Oct, 2017 1 commit
  9. 16 Oct, 2017 1 commit
  10. 13 Oct, 2017 2 commits
  11. 02 Oct, 2017 1 commit
    • Mathias Bynens's avatar
      [parser] Add use counter for U+2028 & U+2029 · d3c98121
      Mathias Bynens authored
      The context is the following proposal to make JSON a subset of
      JavaScript: https://github.com/tc39/proposal-json-superset
      
      There’s interest in performing a side investigation to answer the
      question of what would happen if we stopped treating U+2028 and U+2029
      as `LineTerminator`s *entirely*. (Note that this is separate from the
      proposal, which just changes how these characters are handled in
      ECMAScript strings.) This is technically a breaking change, and IMHO it
      would be wonderful if we could get away with it, but no one really has
      any data on whether or not we could. Adding this use counter lets us get
      that data.
      
      BUG=v8:6827
      
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: Ia22e8db1634df4d3f965bec8e1cfa11cc7b5e9aa
      Reviewed-on: https://chromium-review.googlesource.com/693155
      Commit-Queue: Mathias Bynens <mathias@chromium.org>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48260}
      d3c98121
  12. 22 Aug, 2017 1 commit
  13. 26 Jun, 2017 1 commit
    • hans's avatar
      Make some functions that are hit during renderer startup available for inlining · 777da354
      hans authored
      This is towards closing the perf gap between the MSVC build (which uses link-
      time optimization) and Clang (where LTO isn't ready on Windows yet). We did
      a study (see bug) to see which non-inlined functions are hit a lot during render
      start-up, and which would be inlined during LTO. This should benefit performance
      in all builds which currently don't use LTO (Android, Linux, Mac) as well as
      the Win/Clang build.
      
      The binary size of chrome_child.dll increases by 2KB with this.
      
      BUG=chromium:728324
      CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_chromium_compile_dbg_ng;master.tryserver.chromium.mac:mac_chromium_compile_dbg_ng
      
      Review-Url: https://codereview.chromium.org/2950993002
      Cr-Commit-Position: refs/heads/master@{#46229}
      777da354
  14. 25 Jun, 2017 1 commit
  15. 23 Jun, 2017 1 commit
    • hans's avatar
      Make some functions that are hit during renderer startup available for inlining · d00d52be
      hans authored
      This is towards closing the perf gap between the MSVC build (which uses link-
      time optimization) and Clang (where LTO isn't ready on Windows yet). We did
      a study (see bug) to see which non-inlined functions are hit a lot during render
      start-up, and which would be inlined during LTO. This should benefit performance
      in all builds which currently don't use LTO (Android, Linux, Mac) as well as
      the Win/Clang build.
      
      The binary size of chrome_child.dll increases by 2KB with this.
      
      BUG=chromium:728324
      
      Review-Url: https://codereview.chromium.org/2950993002
      Cr-Commit-Position: refs/heads/master@{#46191}
      d00d52be
  16. 09 Jun, 2017 1 commit
  17. 11 May, 2017 1 commit
  18. 04 May, 2017 1 commit
  19. 28 Mar, 2017 1 commit
    • Daniel Vogelheim's avatar
      [parser] Introduce 'contextual keyword tokens'. · ae1e8759
      Daniel Vogelheim authored
      Introduce 'contextual keyword' tokens, which are parsed as identifiers but
      in some contexts are treated by the parser like proper keywords. These are
      usually keywords introduced by recent ECMAScript versions, which for reasons
      of backwards compatibility are still permissible as regular identifiers in
      most contexts.
      
      Current usage is to check for Token::IDENTIFIER and then do a string
      compare. With this change the initial scan will scan them as usual, but
      will then record the token as IDENTIFIER plus a secondary token with the
      'contextual' value.
      
      BUG=v8:6902
      
      Change-Id: I6ae390382998cf756a23720bd481cb9c0eb78a72
      Reviewed-on: https://chromium-review.googlesource.com/459479
      Commit-Queue: Daniel Vogelheim <vogelheim@chromium.org>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#44189}
      ae1e8759
  20. 16 Mar, 2017 2 commits
    • bradnelson's avatar
      [wasm][asm.js] Adding custom asm.js lexer. · 4c3217e1
      bradnelson authored
      Adding a custom lexer for asm.js parsing.
      It takes advantage of a number of asm.js properties to simply things:
      * Assumes 'use asm' is the only string.
      * Does not handle unicode for now (tools don't emit it).
      * Combines global + local string table with lexer.
      
      R=marja@chromium.org,vogelheim@chromium.org,kschimpf@chromium.org
      
      BUG=v8:4203
      BUG=v8:6090
      
      Review-Url: https://codereview.chromium.org/2751693002
      Cr-Commit-Position: refs/heads/master@{#43874}
      4c3217e1
    • Daniel Vogelheim's avatar
      [parser] Simplify DuplicateFinder. · dee16f86
      Daniel Vogelheim authored
      The current incarncation of DuplicateFinder does work that
      AstValueFactory already does. All that remains is that
      DuplicateFinder wraps a container.
      
      Adding const-ness changes were necessary to have IsDuplicateSymbol
      be const.
      
      BUG=v8:6092
      
      Change-Id: I8081cfeef363717405d5b6325e290fe7725390dc
      Reviewed-on: https://chromium-review.googlesource.com/456317
      Commit-Queue: Marja Hölttä <marja@chromium.org>
      Commit-Queue: Daniel Vogelheim <vogelheim@chromium.org>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#43872}
      dee16f86
  21. 03 Mar, 2017 1 commit
  22. 22 Feb, 2017 1 commit
  23. 12 Jan, 2017 1 commit
    • vogelheim's avatar
      [parser] Reduce excessive inlining. · 778cf612
      vogelheim authored
      The inlining does not seem to actually improve performance, and hence outlining makes the code a bit more readable.
      
      Performance + binary size appear to be at least as good as with inlining. On gcc I get several 10kBs savings in binary size, but only ~100B on clang. In no case have I observed a performance regression.
      
      R=marja@chromium.org
      BUG=v8:3437
      
      Review-Url: https://codereview.chromium.org/2611993002
      Cr-Commit-Position: refs/heads/master@{#42276}
      778cf612
  24. 07 Dec, 2016 2 commits
  25. 02 Dec, 2016 2 commits
  26. 10 Nov, 2016 1 commit
  27. 09 Nov, 2016 1 commit
    • heimbuef's avatar
      [Parser] Added SMI cache · da3e2225
      heimbuef authored
      With the very same SMIs making up a big chunk
      of the parser zone (especially for asm.js) it
      makes sense to cache the AstValues for them.
      This is not ideal yet, but already saves
      hundreds (sic!) MBs of memory for Unity games.
      
      Review-Url: https://codereview.chromium.org/2485423002
      Cr-Commit-Position: refs/heads/master@{#40866}
      da3e2225
  28. 23 Sep, 2016 1 commit
  29. 20 Sep, 2016 2 commits
  30. 19 Sep, 2016 1 commit
  31. 16 Sep, 2016 1 commit
    • 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
  32. 06 Sep, 2016 1 commit
    • 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
  33. 25 Aug, 2016 1 commit