1. 07 Mar, 2016 1 commit
  2. 04 Mar, 2016 3 commits
  3. 03 Mar, 2016 1 commit
  4. 02 Mar, 2016 4 commits
  5. 22 Feb, 2016 1 commit
    • littledan's avatar
      Optimize @@species based on a global 'protector' cell · 7033ae51
      littledan authored
      This patch makes ArraySpeciesCreate fast in V8 by avoiding two property reads
      when the following conditions are met:
      - No Array instance has had its __proto__ reset
      - No Array instance has had a constructor property defined
      - Array.prototype has not had its constructor changed
      - Array[Symbol.species] has not been reset
      
      For subclasses of Array, or for conditions where one of these assumptions is
      violated, the full lookup of species is done according to the ArraySpeciesCreate
      algorithm. Although this is a "performance cliff", it does not come up in the
      expected typical use case of @@species (Array subclassing), so it is hoped that
      this can form a good start. Array subclasses will incur the slowness of looking
      up @@species, but their use won't slow down invocations of, for example,
      Array.prototype.slice on Array base class instances.
      
      Possible future optimizations:
      - For the fallback case where the assumptions don't hold, optimize the two
        property lookups.
      - For Array.prototype.slice and Array.prototype.splice, even if the full lookup
        of @@species needs to take place, we still could take the rest of the C++
        fastpath. However, to do this correctly requires changing the calling convention
        from C++ to JS to pass the @@species out, so it is not attempted in this patch.
      
      With this patch, microbenchmarks of Array.prototype.slice do not suffer a
      noticeable performance regression, unlike their previous 2.5x penalty.
      
      TBR=hpayer@chromium.org
      
      Review URL: https://codereview.chromium.org/1689733002
      
      Cr-Commit-Position: refs/heads/master@{#34199}
      7033ae51
  6. 19 Feb, 2016 3 commits
  7. 18 Feb, 2016 1 commit
  8. 17 Feb, 2016 4 commits
  9. 16 Feb, 2016 2 commits
  10. 15 Feb, 2016 1 commit
  11. 08 Feb, 2016 1 commit
  12. 04 Feb, 2016 1 commit
  13. 03 Feb, 2016 1 commit
  14. 02 Feb, 2016 1 commit
    • verwaest's avatar
      [runtime] Fix integer indexed property handling · 621bdd64
      verwaest authored
      This includes 2 fixes:
      1) We didn't properly advance the holder when checking whether
      Receiver==Holder, so we'd inadvertently block loading the property if
      the first property we find is on the typed array.
      2) Reflect.get may cause any object on the prototype chain of the holder
      to be the receiver; so we need to recheck for this special state for
      each object we perform lookup on.
      
      Review URL: https://codereview.chromium.org/1651913005
      
      Cr-Commit-Position: refs/heads/master@{#33689}
      621bdd64
  15. 29 Jan, 2016 1 commit
    • jkummerow's avatar
      Introduce {FAST,SLOW}_STRING_WRAPPER_ELEMENTS · f4872f74
      jkummerow authored
      String wrappers (new String("foo")) are special objects: their string
      characters are accessed like elements, and they also have an elements
      backing store. This used to require a bunch of explicit checks like:
      
      if (obj->IsJSValue() && JSValue::cast(obj)->value()->IsString()) {
        /* Handle string characters */
      }
      // Handle regular elements (for string wrappers and other objects)
      obj->GetElementsAccessor()->Whatever(...);
      
      This CL introduces new ElementsKinds for string wrapper objects (one for
      fast elements, one for dictionary elements), which allow folding the
      special-casing into new StringWrapperElementsAccessors.
      
      No observable change in behavior is intended.
      
      Review URL: https://codereview.chromium.org/1612323003
      
      Cr-Commit-Position: refs/heads/master@{#33616}
      f4872f74
  16. 26 Jan, 2016 1 commit
    • jarin's avatar
      Replace HeapType with a non-templated FieldType class. · cfaeb63b
      jarin authored
      This replace HeapType with a dedicated class that implements just what we need for field type tracking. In the next CL, I plan to remove FieldType::Iterator because FieldType can iterate over at most one map.
      
      The ultimate plan is to get rid of templates in types.(h|cc) and remove type-inl.h.
      
      TBR=rossberg@chromium.org
      
      Review URL: https://codereview.chromium.org/1636013002
      
      Cr-Commit-Position: refs/heads/master@{#33521}
      cfaeb63b
  17. 18 Jan, 2016 1 commit
  18. 11 Jan, 2016 1 commit
  19. 03 Dec, 2015 1 commit
  20. 27 Nov, 2015 1 commit
  21. 02 Nov, 2015 1 commit
  22. 26 Oct, 2015 1 commit
  23. 23 Oct, 2015 1 commit
  24. 22 Oct, 2015 1 commit
  25. 09 Oct, 2015 1 commit
  26. 05 Oct, 2015 1 commit
  27. 30 Sep, 2015 1 commit
  28. 23 Sep, 2015 1 commit
  29. 10 Sep, 2015 1 commit