1. 11 Oct, 2018 2 commits
  2. 17 Sep, 2018 1 commit
  3. 12 Sep, 2018 1 commit
  4. 11 Sep, 2018 1 commit
  5. 23 Jul, 2018 1 commit
  6. 17 Jul, 2018 1 commit
  7. 13 Jul, 2018 1 commit
  8. 12 Jul, 2018 1 commit
  9. 11 Jul, 2018 1 commit
  10. 23 Jun, 2018 1 commit
  11. 19 Jun, 2018 1 commit
  12. 17 May, 2018 1 commit
  13. 02 May, 2018 1 commit
  14. 27 Apr, 2018 1 commit
  15. 16 Mar, 2018 1 commit
  16. 30 Jan, 2018 1 commit
  17. 25 Jan, 2018 1 commit
    • Yang Guo's avatar
      Introduce SimpleNumberDictionary. · 3857b44e
      Yang Guo authored
      This is somewhat of a revival of what used to be
      UnseededNumberDictionary. The difference to NumberDictionary is that
      each entry only has two fields (no field for property details) and there
      is no header field for a bitfield.
      
      The reason for this change is memory regression introduced when we
      removed UnseededNumberDictionary (6e1c57ea). We now use
      SimpleNumberDictionary for
      - slow template instantiation cache
      - code stubs table
      - value serializer map
      - stack frame cache
      - type profile source positions
      
      R=ishell@chromium.org, ulan@chromium.org
      
      Bug: chromium:783695
      Change-Id: I3cd32e485060bb379fb2279eeefbbbded7455f0e
      Reviewed-on: https://chromium-review.googlesource.com/885811Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Yang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50869}
      3857b44e
  18. 07 Dec, 2017 1 commit
  19. 22 Nov, 2017 1 commit
  20. 07 Nov, 2017 1 commit
  21. 06 Nov, 2017 1 commit
  22. 26 Oct, 2017 1 commit
    • Igor Sheludko's avatar
      [cleanup] Prepare V8-internal AccessorInfo objects for sharing. · b4fdce5a
      Igor Sheludko authored
      Rename |property_attributes| to |initial_property_attributes| and ensure
      that it is used as a storage of values only for AccessorInfos installed in
      API Templates (i.e. ObjectTemplate and FunctionTemplate).
      When an AccessorInfo is installed directly into an existing JS object
      (via JSObject::SetAccessor) or into a DescriptorArray (when certain V8
      objects' shapes are configured) it is not necessary to thread attributes
      being set through the AccessorInfo instance.
      
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: Ibe61026f08c42549756f694129a286635ffe5769
      Reviewed-on: https://chromium-review.googlesource.com/730425
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48978}
      b4fdce5a
  23. 25 Oct, 2017 1 commit
    • Jakob Kummerow's avatar
      [bigint] Fix abstract equality with junk strings · 98df94cd
      Jakob Kummerow authored
      Abstract equality comparison of a BigInt and a String converts the
      latter to BigInt. This conversion can fail; since we do not want to
      pass a context to the comparison function, we must signal such failure
      without throwing an exception.
      This CL uses the existing ShouldThrow enum to configure behavior of
      String-to-BigInt conversion, moving it out of Object into globals.h.
      
      Bug: v8:6791, v8:6979
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: Ibb98675079b8392cf03bbcbbbd5556108500a32d
      Reviewed-on: https://chromium-review.googlesource.com/734172
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48946}
      98df94cd
  24. 13 Oct, 2017 1 commit
  25. 20 Sep, 2017 1 commit
  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. 24 Jul, 2017 2 commits
  28. 13 Jul, 2017 1 commit
  29. 10 Jul, 2017 1 commit
  30. 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
  31. 22 Jun, 2017 2 commits
  32. 21 Jun, 2017 1 commit
  33. 12 Jun, 2017 1 commit
  34. 08 Jun, 2017 1 commit
  35. 06 Jun, 2017 1 commit
    • Igor Sheludko's avatar
      [parser] Introduce SharedFunctionInfo::has_shared_name(). · 9a2c18f5
      Igor Sheludko authored
      Properly propagate the fact that the function has a statically known name from
      parser to SharedFunctionInfo objects. The empty string that has been set as
      name before this CL does not help to distinguish cases like:
        var o1 = { ''(){} };
        var o1 = { [foo()](){} };
      or
        var o2 = { get ''(){} };
        var o2 = { get [foo()](){} };
      
      This is a preliminary step for using different layouts for closure objects with
      and without computed names.
      
      TBR=bmeurer@chromium.org, marja@chromium.org
      
      Bug: v8:6459
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I10afa6f4bda7881c3714711a75f720f83c1d875d
      Reviewed-on: https://chromium-review.googlesource.com/522073
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#45744}
      9a2c18f5
  36. 02 May, 2017 1 commit
  37. 17 Mar, 2017 1 commit
    • titzer's avatar
      [rename] Rename internal field to embedder field. · 72e53936
      titzer authored
      This CL renames all occurrences of "internal field" to "embedder field"
      to prevent confusion. As it turns out, these fields are not internal to
      V8, but are actually embedder provided fields that should not be mucked
      with by the internal implementation of V8.
      
      Note that WASM does use these fields, and it should not.
      
      BUG=v8:6058
      
      Review-Url: https://codereview.chromium.org/2741683004
      Cr-Commit-Position: refs/heads/master@{#43900}
      72e53936