1. 23 Jun, 2014 1 commit
  2. 20 Jun, 2014 1 commit
  3. 10 Jun, 2014 2 commits
  4. 06 Jun, 2014 1 commit
  5. 03 Jun, 2014 3 commits
  6. 20 May, 2014 1 commit
    • adamk@chromium.org's avatar
      ES6 Map/Set iterators/forEach improvements · 70c3a714
      adamk@chromium.org authored
      This changes how Map/Set interacts with its iterators. When the
      underlying table is rehashed or cleared, we create a new table (like
      before) but we add a reference from the old table to the new table. We
      also add an array describing how to transition the iterator from the
      old table to the new table.
      
      When Next is called on the iterator it checks if there is a newer table
      that it should transition to. If there is, it updates the index based
      on the previously recorded changes and finally changes itself to point
      at the new table.
      
      With these changes Map/Set no longer keeps the iterators alive. Also,
      as before, the iterators keep the underlying table(s) alive but not the
      actual Map/Set.
      
      BUG=v8:1793
      LOG=Y
      R=mstarzinger@chromium.org, rossberg@chromium.org
      
      Review URL: https://codereview.chromium.org/289503002
      
      Patch from Erik Arvidsson <arv@chromium.org>.
      
      git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21389 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      70c3a714
  7. 09 May, 2014 1 commit
  8. 06 May, 2014 1 commit
  9. 02 May, 2014 1 commit
  10. 30 Apr, 2014 2 commits
  11. 29 Apr, 2014 2 commits
  12. 25 Apr, 2014 1 commit
  13. 24 Apr, 2014 2 commits
  14. 22 Apr, 2014 1 commit
  15. 17 Apr, 2014 2 commits
    • adamk@chromium.org's avatar
      ES6: Add support for Map/Set forEach · 3308cb58
      adamk@chromium.org authored
      This implements MapIterator and SetIterator which matches
      the same constructs in the ES6 spec. However, these 2
      iterators are not exposed to user code yet. They are only
      used internally to implement Map.prototype.forEach and
      Set.prototype.forEach.
      
      Each iterator has a reference to the OrderedHashTable where
      it directly accesses the hash table's entries.
      
      The OrderedHashTable has a reference to the newest iterator
      and each iterator has a reference to the next and previous
      iterator, effectively creating a double linked list.
      
      When the OrderedHashTable is mutated (or replaced) all the
      iterators are updated.
      
      When the iterator iterates passed the end of the data table
      it closes itself. Closed iterators no longer have a
      reference to the OrderedHashTable and they are removed from
      the double linked list. In the case of Map/Set forEach, we
      manually call Close on the iterator in case an exception was
      thrown so that the iterator never reached the end.
      
      At this point the OrderedHashTable keeps all the non finished
      iterators alive but since the only thing we currently expose
      is forEach there are no unfinished iterators outside a forEach
      call. Once we expose the iterators to user code we will need
      to make the references from the OrderedHashTable to the
      iterators weak and have some mechanism to close an iterator
      when it is garbage collected.
      
      BUG=1793, 2323
      LOG=Y
      R=adamk@chromium.org
      TBR=mstarzinger@chromium.org
      
      Review URL: https://codereview.chromium.org/238063009
      
      Patch from Erik Arvidsson <arv@chromium.org>.
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20857 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      3308cb58
    • bmeurer@chromium.org's avatar
      Track up to 5 stable maps as field type. · 779e87b8
      bmeurer@chromium.org authored
      R=svenpanne@chromium.org
      
      Review URL: https://codereview.chromium.org/240813002
      
      git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20831 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
      779e87b8
  16. 16 Apr, 2014 9 commits
  17. 15 Apr, 2014 1 commit
  18. 14 Apr, 2014 2 commits
  19. 11 Apr, 2014 1 commit
  20. 08 Apr, 2014 2 commits
  21. 07 Apr, 2014 1 commit
  22. 01 Apr, 2014 1 commit
  23. 26 Mar, 2014 1 commit