1. 13 Dec, 2017 1 commit
  2. 07 Dec, 2017 1 commit
  3. 02 Dec, 2017 1 commit
    • Mathias Bynens's avatar
      Normalize casing of hexadecimal digits · 822be9b2
      Mathias Bynens authored
      This patch normalizes the casing of hexadecimal digits in escape
      sequences of the form `\xNN` and integer literals of the form
      `0xNNNN`.
      
      Previously, the V8 code base used an inconsistent mixture of uppercase
      and lowercase.
      
      Google’s C++ style guide uses uppercase in its examples:
      https://google.github.io/styleguide/cppguide.html#Non-ASCII_Characters
      
      Moreover, uppercase letters more clearly stand out from the lowercase
      `x` (or `u`) characters at the start, as well as lowercase letters
      elsewhere in strings.
      
      BUG=v8:7109
      TBR=marja@chromium.org,titzer@chromium.org,mtrofin@chromium.org,mstarzinger@chromium.org,rossberg@chromium.org,yangguo@chromium.org,mlippautz@chromium.org
      NOPRESUBMIT=true
      
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I790e21c25d96ad5d95c8229724eb45d2aa9e22d6
      Reviewed-on: https://chromium-review.googlesource.com/804294
      Commit-Queue: Mathias Bynens <mathias@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49810}
      822be9b2
  4. 15 Nov, 2017 1 commit
  5. 08 Nov, 2017 1 commit
    • jgruber's avatar
      [factory] Simplify JSFunction creation · 72230246
      jgruber authored
      There's three common situations in which we need to create JSFunction
      objects.  1) from the compiler, 2) from tests, and 3) everything else
      (mostly during bootstrapping).
      
      This is an attempt to simplify case 3), which previously relied on
      several Factory::NewFunction overloads where it was not clear how the
      semantics of each overload differed.
      
      This CL removes all but one overload, and packs arguments into a new
      NewFunctionArgs helper class.
      
      It also removes the hacks around
      SFI::set_lazy_deserialization_builtin_id by explicitly passing
      builtin_id into Factory::NewSharedFunctionInfo.
      
      Drive-by-fix: Properly set is_constructor hint in
      SimpleCreateSharedFunctionInfo.
      
      Bug: v8:6624
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: Ica94d95e72e443055db5e7ff9e8cdf4115201ef1
      Reviewed-on: https://chromium-review.googlesource.com/757094
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49224}
      72230246
  6. 07 Nov, 2017 2 commits
  7. 25 Oct, 2017 1 commit
  8. 24 Oct, 2017 1 commit
  9. 23 Oct, 2017 1 commit
  10. 20 Oct, 2017 1 commit
  11. 19 Oct, 2017 1 commit
  12. 17 Oct, 2017 1 commit
    • Daniel Clifford's avatar
      Add FixedArray extraction and cloning utils to CSA · 6148cbfa
      Daniel Clifford authored
      This adds a single bottleneck that properly handles the copying of empty, COW
      and FixedDoubleArray arrays under the control of flags. This is in preparation
      of adding new CSA-based array builtins on Array.prototype.
      
      Drive by: Fix SmiConstant handling when ENABLE_VERIFY_CSA is not active and 
      make the use of constant detection/folding consistent in the CSA depending
      on ParameterMode.
      
      Change-Id: If1889ab8cbff1805286b7b4344c29ffbe7191b39
      Reviewed-on: https://chromium-review.googlesource.com/715798
      Commit-Queue: Daniel Clifford <danno@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48624}
      6148cbfa
  13. 16 Oct, 2017 1 commit
  14. 13 Oct, 2017 1 commit
  15. 09 Oct, 2017 1 commit
  16. 05 Oct, 2017 1 commit
  17. 22 Sep, 2017 1 commit
  18. 15 Sep, 2017 1 commit
  19. 07 Sep, 2017 1 commit
  20. 06 Sep, 2017 1 commit
  21. 31 Aug, 2017 1 commit
  22. 28 Aug, 2017 1 commit
  23. 21 Aug, 2017 1 commit
  24. 04 Aug, 2017 1 commit
  25. 03 Aug, 2017 1 commit
    • Benedikt Meurer's avatar
      [csa] Extend TryToName to also implicitly convert Oddball keys. · 426ae426
      Benedikt Meurer authored
      Previously TryToName bailed out for Oddball keys (i.e. when passing true
      or false as the key), which meant that for example the generic
      KeyedLoadIC would always bail out to the %KeyedGetProperty runtime
      function. But handling Oddball keys is fairly easy, since every oddball
      value carries it's unique string representation. Adding just this case
      to the CodeStubAssembler::TryToName method boosts this simple
      micro-benchmark by a factor of 4x:
      
        const n = 1e7;
        const obj = {};
        const key = true;
      
        console.time('foo');
        for (let i = 0; i < n; ++i) {
          if (obj[key] === undefined) {
            obj[key] = key;
          }
        }
        console.timeEnd('foo');
      
      It also shows on the ARES-6 ML benchmark and on several Speedometer
      tests, where objects are being used as dictionaries and the developers
      rely on the implicit ToString conversions on the property accesses.
      In the ARES-6 ML benchmark, the number of calls to %KeyedGetProperty
      is reduced by 137,758.
      
      Bug: v8:6278, v8:6344, v8:6670
      Change-Id: Iaa965e30be4c247682a67ec09543655df9b761d2
      Reviewed-on: https://chromium-review.googlesource.com/599527Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47105}
      426ae426
  26. 01 Aug, 2017 1 commit
    • Benedikt Meurer's avatar
      [builtins] Speed-up Object.prototype.toString. · 31800120
      Benedikt Meurer authored
      The @@toStringTag lookup in Object.prototype.toString causes quite a
      lot of overhead and oftentimes dominates the builtin performance. These
      lookups are almost always negative, especially for primitive values,
      and Object.prototype.toString is often used to implement predicates
      (like in Node core or in AngularJS), so having a way to skip the
      negative lookup yields big performance gains.
      
      This CL introduces a "MayHaveInterestingSymbols" bit on every map,
      which says whether instances with this map may have an interesting
      symbol. Currently only @@toStringTag is considered an interesting
      symbol, but we can extend that in the future.
      
      In the Object.prototype.toString we can use the interesting symbols
      bit to do a quick check on the prototype chain to see if there are
      any maps that might have the @@toStringTag, and if not, we can just
      immediately return the result, which is very fast because it's derived
      from the instance type. This also avoids the ToObject conversions for
      primitive values, which is important, since this causes unnecessary
      GC traffic and in for example AngularJS, strings are also often probed
      via the Object.prototype.toString based predicates.
      
      This boosts Speedometer/AngularJS by over 3% and Speedometer overall
      by up to 1%. On the microbenchmark from the similar SpiderMonkey bug
      (https://bugzilla.mozilla.org/show_bug.cgi?id=1369042), we go from
      roughly 450ms to 70ms, which corresponds to a 6.5x improvement.
      
      ```
      function f() {
          var res = "";
          var a = [1, 2, 3];
          var toString = Object.prototype.toString;
          var t = new Date;
          for (var i = 0; i < 5000000; i++)
      	res = toString.call(a);
          print(new Date - t);
          return res;
      }
      f();
      ```
      
      The design document at https://goo.gl/e8CruQ has some additional
      data points.
      
      TBR=ulan@chromium.org
      
      Bug: v8:6654
      Change-Id: I31932cf41ecddad079d294e2c322a852af0ed244
      Reviewed-on: https://chromium-review.googlesource.com/593620
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47034}
      31800120
  27. 25 Jul, 2017 1 commit
  28. 24 Jul, 2017 2 commits
  29. 20 Jul, 2017 2 commits
  30. 19 Jul, 2017 1 commit
  31. 18 Jul, 2017 2 commits
  32. 11 Jul, 2017 1 commit
  33. 10 Jul, 2017 1 commit
  34. 30 Jun, 2017 1 commit
    • Mathias Bynens's avatar
      [elements] Rename FAST elements kinds · 26c00f4a
      Mathias Bynens authored
      The `FAST_` prefix doesn’t make much sense — they’re all just different cases
      with their own optimizations. Packedness being implicit (e.g. `FAST_ELEMENTS`
      vs. `FAST_HOLEY_ELEMENTS`) is not ideal, either.
      
      This patch renames the FAST elements kinds as follows:
      
      - e.g. FAST_ELEMENTS => PACKED_ELEMENTS
      - e.g. FAST_HOLEY_ELEMENTS => HOLEY_ELEMENTS
      
      The following exceptions are left intact, for lack of a better name:
      
      - FAST_SLOPPY_ARGUMENTS_ELEMENTS
      - SLOW_SLOPPY_ARGUMENTS_ELEMENTS
      - FAST_STRING_WRAPPER_ELEMENTS
      - SLOW_STRING_WRAPPER_ELEMENTS
      
      This makes it easier to reason about elements kinds, and less confusing to
      explain how they’re used.
      
      R=jkummerow@chromium.org, cbruni@chromium.org
      BUG=v8:6548
      
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: Ie7c6bee85583c3d84b730f7aebbd70c1efa38af9
      Reviewed-on: https://chromium-review.googlesource.com/556032Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Mathias Bynens <mathias@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46361}
      26c00f4a
  35. 27 Jun, 2017 1 commit
  36. 19 May, 2017 1 commit