1. 14 Mar, 2017 1 commit
  2. 14 Feb, 2017 1 commit
  3. 13 Jan, 2017 1 commit
    • jshin's avatar
      Fix two DCHECK failures in ICU case mapping code · ac9e6285
      jshin authored
      1.
      DCHECK in runtime-i18n.cc for case mapping was wrong to
      assume that the longest primary language tag is 3 characters.
      BCP 47 actually allows up to 8 characters.
      
      2. GetFlatContent() was called to a string without flattening it first.
      
      BUG=680314,680464
      TEST=intl/general/case-mapping (see also the bugs)
      
      Review-Url: https://codereview.chromium.org/2629763003
      Cr-Commit-Position: refs/heads/master@{#42343}
      ac9e6285
  4. 09 Jan, 2017 1 commit
    • littledan's avatar
      [intl] Remove redundant type checking system · 788c96a9
      littledan authored
      Previously, the Intl implementation tracked types two ways:
       - In the intl_initialized_marker_symbol
       - In various named properties of the intl_impl_object_symbol value
      
      As far as I can tell, these will never disagree with each other,
      modulo bugs in Intl itself. This patch removes the second type
      checking system.
      
      This reland includes a fixed type check for
      Intl.DateTimeFormat.prototype.formatToParts , which is the only Intl
      method which is not bound. All future methods will follow this
      pattern.
      
      The second reland ensures that a newly inserted test is only run
      if Intl is present.
      
      BUG=v8:5751,chromium:677055, v8:4962
      CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_linux_noi18n_rel_ng
      
      TBR=yangguo@chromium.org
      
      Review-Url: https://codereview.chromium.org/2623683002
      Cr-Commit-Position: refs/heads/master@{#42152}
      788c96a9
  5. 07 Jan, 2017 2 commits
    • machenbach's avatar
      Revert of [intl] Remove redundant type checking system (patchset #4 id:60001... · b1e4f79e
      machenbach authored
      Revert of [intl] Remove redundant type checking system (patchset #4 id:60001 of https://codereview.chromium.org/2600913002/ )
      
      Reason for revert:
      Breaks noi18n.
      
      Original issue's description:
      > [intl] Remove redundant type checking system
      >
      > Previously, the Intl implementation tracked types two ways:
      >  - In the intl_initialized_marker_symbol
      >  - In various named properties of the intl_impl_object_symbol value
      >
      > As far as I can tell, these will never disagree with each other,
      > modulo bugs in Intl itself. This patch removes the second type
      > checking system.
      >
      > This reland includes a fixed type check for
      > Intl.DateTimeFormat.prototype.formatToParts , which is the only Intl
      > method which is not bound. All future methods will follow this
      > pattern.
      >
      > BUG=v8:5751,chromium:677055, v8:4962
      > CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_linux_noi18n_rel_ng
      >
      > Review-Url: https://codereview.chromium.org/2600913002
      > Cr-Commit-Position: refs/heads/master@{#42118}
      > Committed: https://chromium.googlesource.com/v8/v8/+/aa8a2d2789f79c2c367db406e453b9044e594e25
      
      TBR=yangguo@chromium.org,adamk@chromium.org,littledan@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:5751,chromium:677055, v8:4962
      
      Review-Url: https://codereview.chromium.org/2617323002
      Cr-Commit-Position: refs/heads/master@{#42119}
      b1e4f79e
    • littledan's avatar
      [intl] Remove redundant type checking system · aa8a2d27
      littledan authored
      Previously, the Intl implementation tracked types two ways:
       - In the intl_initialized_marker_symbol
       - In various named properties of the intl_impl_object_symbol value
      
      As far as I can tell, these will never disagree with each other,
      modulo bugs in Intl itself. This patch removes the second type
      checking system.
      
      This reland includes a fixed type check for
      Intl.DateTimeFormat.prototype.formatToParts , which is the only Intl
      method which is not bound. All future methods will follow this
      pattern.
      
      BUG=v8:5751,chromium:677055, v8:4962
      CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_linux_noi18n_rel_ng
      
      Review-Url: https://codereview.chromium.org/2600913002
      Cr-Commit-Position: refs/heads/master@{#42118}
      aa8a2d27
  6. 27 Dec, 2016 2 commits
  7. 23 Dec, 2016 2 commits
    • littledan's avatar
      [intl] Add new semantics + compat fallback to Intl constructor · b0a09d78
      littledan authored
      ECMA 402 v2 made Intl constructors more strict in terms of how they would
      initialize objects, refusing to initialize objects which have already
      been constructed. However, when Chrome tried to ship these semantics,
      we ran into web compatibility issues.
      
      This patch tries to square the circle and implement the simpler v2 object
      semantics while including a compatibility workaround to allow objects to
      sort of be initialized later, storing the real underlying Intl object
      in a symbol-named property.
      
      The new semantics are described in this PR against the ECMA 402 spec:
      https://github.com/tc39/ecma402/pull/84
      
      BUG=v8:4360, v8:4870
      LOG=Y
      
      Review-Url: https://codereview.chromium.org/2582993002
      Cr-Commit-Position: refs/heads/master@{#41943}
      b0a09d78
    • littledan's avatar
      [intl] Remove redundant type checking system · 0d5561b6
      littledan authored
      Previously, the Intl implementation tracked types two ways:
       - In the intl_initialized_marker_symbol
       - In various named properties of the intl_impl_object_symbol value
      
      As far as I can tell, these will never disagree with each other,
      modulo bugs in Intl itself. This patch removes the second type
      checking system.
      
      BUG=v8:5751
      
      Review-Url: https://codereview.chromium.org/2591203002
      Cr-Commit-Position: refs/heads/master@{#41941}
      0d5561b6
  8. 20 Dec, 2016 1 commit
  9. 19 Dec, 2016 2 commits
  10. 28 Nov, 2016 1 commit
    • jshin's avatar
      Fix the uppercasing of U+00E7(ç) and U+00F7(÷) · 2f5da9a5
      jshin authored
      Due to a typo in runtime-i18n.js, 'ç'(U+00E7) was not uppercased while
      '÷'(U+00F7) was incorrectly uppercased to '×'(U+00D7).
      
      Add a comprehensive test for Latin-1 supplemental block (U+00A0 ~ U+00FF).
      (they're special-cased for speed-up and needs to have a test for the range.).
      
      TEST=intl/general/case-mapping
      BUG=v8:5681
      
      Review-Url: https://codereview.chromium.org/2533033003
      Cr-Commit-Position: refs/heads/master@{#41331}
      2f5da9a5
  11. 17 Nov, 2016 1 commit
  12. 15 Nov, 2016 1 commit
    • jshin's avatar
      Use a regular ICU API for el-Upper · 4f224b39
      jshin authored
      ICU now supports uppercasing in Greek via its regular uppercasing API.
      So, there's no need to use a slow transliteration API for uppercasing
      in Greek.
      
      This CL includes rolling ICU to ICU 58.1.
      
      Besides, drop intl402/Intl/getCanonicalLocales/weird-cases from
      test262.status because it passes now with ICU 58.1.
      
      BUG=chromium:637001,v8:5012
      
      Review-Url: https://codereview.chromium.org/2491333003
      Cr-Commit-Position: refs/heads/master@{#41009}
      4f224b39
  13. 19 Sep, 2016 1 commit
  14. 15 Sep, 2016 1 commit
  15. 06 Sep, 2016 1 commit
  16. 18 Aug, 2016 1 commit
  17. 17 Aug, 2016 1 commit
  18. 11 Aug, 2016 1 commit
  19. 10 Aug, 2016 1 commit
  20. 09 Aug, 2016 1 commit
  21. 08 Jul, 2016 1 commit
    • littledan's avatar
      Avoid calling the builtin String.prototype.split in Intl · 97e8046e
      littledan authored
      The Intl code previously called the initial value of String.prototype.split
      for some internal operations. However, this did not have the intended effect
      as Intl only needs to split strings by strings, but String.prototype.split
      has integration with Symbol.split for RegExps.
      
      This patch replaces the calls of StringSplit in the Intl implementation
      with direct calls to the %StringSplit runtime function to avoid the issue.
      
      R=yangguo@chromium.org
      BUG=v8:5179
      
      Review-Url: https://codereview.chromium.org/2126073002
      Cr-Commit-Position: refs/heads/master@{#37615}
      97e8046e
  22. 27 May, 2016 1 commit
  23. 18 May, 2016 1 commit
  24. 12 May, 2016 1 commit
  25. 11 May, 2016 1 commit
    • jshin's avatar
      Use ICU case conversion/transliterator for case conversion · b348d47b
      jshin authored
      When I18N is enabled, use ICU's case conversion API and transliteration
      API [1] to implement String.prototype.to{Upper,Lower}Case and
      String.prototype.toLocale{Upper,Lower}Case.
      
      * ICU-based case conversion was implemented in runtime-i18n.cc/i18n.js
      * The above 4 functions are overridden with those in i18n.js when
        --icu_case_mapping flag is turned on. To control the override by the flag,
        they're overriden in icu-case-mapping.js
      
      Previously, toLocale{U,L}Case just called to{U,L}Case so that they didn't
      support locale-sensitive case conversion for Turkic languages (az, tr),
      Greek (el) and Lithuanian (lt).
      
      Before ICU APIs for the most general case are called, a fast-path for Latin-1
      is tried. It's taken from Blink and adopted as necessary. This fast path
      is always tried for to{U,L}Case. For toLocale{U,L}Case, it's only taken
      when a locale (explicitly specified or default) is not in {az, el, lt, tr}.
      
      With these changes, a build with --icu_case_mapping=true passes a bunch
      of tests in test262/intl402/Strings/* and intl/* that failed before.
      
      Handling of pure ASCII strings (aligned at word boundary) are not as fast
      as Unibrow's implementation that uses word-by-word case conversion. OTOH,
      Latin-1 input handling is faster than Unibrow. General Unicode input
      handling is slower but more accurate.
      
      See https://docs.google.com/spreadsheets/d/1KJCJxKc1FxFXjwmYqABS0_2cNdPetvnd8gY8_HGSbrg/edit?usp=sharing for the benchmark.
      
      This CL started with http://crrev.com/1544023002#ps200001 by littledan@,
      but has changed significantly since.
      
      [1] See why transliteration API is needed for uppercasing in Greek.
          http://bugs.icu-project.org/trac/ticket/10582
      
      R=yangguo
      BUG=v8:4476,v8:4477
      LOG=Y
      TEST=test262/{built-ins,intl402}/Strings/*, webkit/fast/js/*, mjsunit/string-case,
           intl/general/case*
      
      Review-Url: https://codereview.chromium.org/1812673005
      Cr-Commit-Position: refs/heads/master@{#36187}
      b348d47b
  26. 02 May, 2016 1 commit
  27. 29 Apr, 2016 1 commit
  28. 19 Apr, 2016 1 commit
  29. 07 Apr, 2016 1 commit
  30. 29 Mar, 2016 1 commit
  31. 24 Feb, 2016 1 commit
    • littledan's avatar
      Intl: Use private symbols to memoize bound functions · a59f62fc
      littledan authored
      The Intl object used to keep around functions which are bound to the
      receiver and memoized in the object (as required by the ECMA-402 spec)
      in ordinary properties with names like __boundformat__. This patch
      instead stores those methods in private symbol properties, so they are
      not exposed to users. A search in GitHub didn't find any uses of
      __boundformat__ (whereas the same search found plenty of usages of
      other V8 Intl features), so I think this should be fine in terms of
      web compatibility.
      
      BUG=v8:3785
      R=adamk
      LOG=Y
      
      Review URL: https://codereview.chromium.org/1728823002
      
      Cr-Commit-Position: refs/heads/master@{#34230}
      a59f62fc
  32. 12 Dec, 2015 1 commit
  33. 08 Dec, 2015 1 commit
  34. 22 Oct, 2015 1 commit
  35. 14 Oct, 2015 1 commit
  36. 07 Oct, 2015 1 commit