Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Side by Side Diff: src/runtime.cc

Issue 238063009: ES6: Add support for Map/Set forEach (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Remove explicit instantiation of private and functions in objects-inl.h Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 1534 matching lines...) Expand 10 before | Expand all | Expand 10 after
1545 ASSERT(args.length() == 2); 1545 ASSERT(args.length() == 2);
1546 CONVERT_ARG_HANDLE_CHECKED(JSSet, holder, 0); 1546 CONVERT_ARG_HANDLE_CHECKED(JSSet, holder, 0);
1547 Handle<Object> key(args[1], isolate); 1547 Handle<Object> key(args[1], isolate);
1548 Handle<OrderedHashSet> table(OrderedHashSet::cast(holder->table())); 1548 Handle<OrderedHashSet> table(OrderedHashSet::cast(holder->table()));
1549 table = OrderedHashSet::Remove(table, key); 1549 table = OrderedHashSet::Remove(table, key);
1550 holder->set_table(*table); 1550 holder->set_table(*table);
1551 return isolate->heap()->undefined_value(); 1551 return isolate->heap()->undefined_value();
1552 } 1552 }
1553 1553
1554 1554
1555 RUNTIME_FUNCTION(MaybeObject*, Runtime_SetClear) {
1556 HandleScope scope(isolate);
1557 ASSERT(args.length() == 1);
1558 CONVERT_ARG_HANDLE_CHECKED(JSSet, holder, 0);
1559 Handle<OrderedHashSet> table(OrderedHashSet::cast(holder->table()));
1560 table = OrderedHashSet::Clear(table);
1561 holder->set_table(*table);
1562 return isolate->heap()->undefined_value();
1563 }
1564
1565
1555 RUNTIME_FUNCTION(MaybeObject*, Runtime_SetGetSize) { 1566 RUNTIME_FUNCTION(MaybeObject*, Runtime_SetGetSize) {
1556 HandleScope scope(isolate); 1567 HandleScope scope(isolate);
1557 ASSERT(args.length() == 1); 1568 ASSERT(args.length() == 1);
1558 CONVERT_ARG_HANDLE_CHECKED(JSSet, holder, 0); 1569 CONVERT_ARG_HANDLE_CHECKED(JSSet, holder, 0);
1559 Handle<OrderedHashSet> table(OrderedHashSet::cast(holder->table())); 1570 Handle<OrderedHashSet> table(OrderedHashSet::cast(holder->table()));
1560 return Smi::FromInt(table->NumberOfElements()); 1571 return Smi::FromInt(table->NumberOfElements());
1561 } 1572 }
1562 1573
1563 1574
1575 RUNTIME_FUNCTION(MaybeObject*, Runtime_SetCreateIterator) {
1576 HandleScope scope(isolate);
1577 ASSERT(args.length() == 2);
1578 CONVERT_ARG_HANDLE_CHECKED(JSSet, holder, 0);
1579 CONVERT_SMI_ARG_CHECKED(kind, 1)
1580 ASSERT(kind == JSSetIterator::kKindValues
1581 || kind == JSSetIterator::kKindEntries);
1582 Handle<OrderedHashSet> table(OrderedHashSet::cast(holder->table()));
1583 Handle<JSSetIterator> iterator = JSSetIterator::Create(table, kind);
1584 return *iterator;
1585 }
1586
1587
1588 RUNTIME_FUNCTION(MaybeObject*, Runtime_SetIteratorNext) {
1589 HandleScope scope(isolate);
1590 ASSERT(args.length() == 1);
1591 CONVERT_ARG_HANDLE_CHECKED(JSSetIterator, holder, 0);
1592 Handle<JSObject> result = JSSetIterator::Next(holder);
1593 return *result;
1594 }
1595
1596
1597 RUNTIME_FUNCTION(MaybeObject*, Runtime_SetIteratorClose) {
1598 HandleScope scope(isolate);
1599 ASSERT(args.length() == 1);
1600 CONVERT_ARG_HANDLE_CHECKED(JSSetIterator, holder, 0);
1601 holder->Close();
1602 return isolate->heap()->undefined_value();
1603 }
1604
1605
1564 RUNTIME_FUNCTION(MaybeObject*, Runtime_MapInitialize) { 1606 RUNTIME_FUNCTION(MaybeObject*, Runtime_MapInitialize) {
1565 HandleScope scope(isolate); 1607 HandleScope scope(isolate);
1566 ASSERT(args.length() == 1); 1608 ASSERT(args.length() == 1);
1567 CONVERT_ARG_HANDLE_CHECKED(JSMap, holder, 0); 1609 CONVERT_ARG_HANDLE_CHECKED(JSMap, holder, 0);
1568 Handle<OrderedHashMap> table = isolate->factory()->NewOrderedHashMap(); 1610 Handle<OrderedHashMap> table = isolate->factory()->NewOrderedHashMap();
1569 holder->set_table(*table); 1611 holder->set_table(*table);
1570 return *holder; 1612 return *holder;
1571 } 1613 }
1572 1614
1573 1615
(...skipping 26 matching lines...) Expand all
1600 CONVERT_ARG_HANDLE_CHECKED(Object, key, 1); 1642 CONVERT_ARG_HANDLE_CHECKED(Object, key, 1);
1601 Handle<OrderedHashMap> table(OrderedHashMap::cast(holder->table())); 1643 Handle<OrderedHashMap> table(OrderedHashMap::cast(holder->table()));
1602 Handle<Object> lookup(table->Lookup(*key), isolate); 1644 Handle<Object> lookup(table->Lookup(*key), isolate);
1603 Handle<OrderedHashMap> new_table = 1645 Handle<OrderedHashMap> new_table =
1604 OrderedHashMap::Put(table, key, isolate->factory()->the_hole_value()); 1646 OrderedHashMap::Put(table, key, isolate->factory()->the_hole_value());
1605 holder->set_table(*new_table); 1647 holder->set_table(*new_table);
1606 return isolate->heap()->ToBoolean(!lookup->IsTheHole()); 1648 return isolate->heap()->ToBoolean(!lookup->IsTheHole());
1607 } 1649 }
1608 1650
1609 1651
1652 RUNTIME_FUNCTION(MaybeObject*, Runtime_MapClear) {
1653 HandleScope scope(isolate);
1654 ASSERT(args.length() == 1);
1655 CONVERT_ARG_HANDLE_CHECKED(JSMap, holder, 0);
1656 Handle<OrderedHashMap> table(OrderedHashMap::cast(holder->table()));
1657 table = OrderedHashMap::Clear(table);
1658 holder->set_table(*table);
1659 return isolate->heap()->undefined_value();
1660 }
1661
1662
1610 RUNTIME_FUNCTION(MaybeObject*, Runtime_MapSet) { 1663 RUNTIME_FUNCTION(MaybeObject*, Runtime_MapSet) {
1611 HandleScope scope(isolate); 1664 HandleScope scope(isolate);
1612 ASSERT(args.length() == 3); 1665 ASSERT(args.length() == 3);
1613 CONVERT_ARG_HANDLE_CHECKED(JSMap, holder, 0); 1666 CONVERT_ARG_HANDLE_CHECKED(JSMap, holder, 0);
1614 CONVERT_ARG_HANDLE_CHECKED(Object, key, 1); 1667 CONVERT_ARG_HANDLE_CHECKED(Object, key, 1);
1615 CONVERT_ARG_HANDLE_CHECKED(Object, value, 2); 1668 CONVERT_ARG_HANDLE_CHECKED(Object, value, 2);
1616 Handle<OrderedHashMap> table(OrderedHashMap::cast(holder->table())); 1669 Handle<OrderedHashMap> table(OrderedHashMap::cast(holder->table()));
1617 Handle<OrderedHashMap> new_table = OrderedHashMap::Put(table, key, value); 1670 Handle<OrderedHashMap> new_table = OrderedHashMap::Put(table, key, value);
1618 holder->set_table(*new_table); 1671 holder->set_table(*new_table);
1619 return isolate->heap()->undefined_value(); 1672 return isolate->heap()->undefined_value();
1620 } 1673 }
1621 1674
1622 1675
1623 RUNTIME_FUNCTION(MaybeObject*, Runtime_MapGetSize) { 1676 RUNTIME_FUNCTION(MaybeObject*, Runtime_MapGetSize) {
1624 HandleScope scope(isolate); 1677 HandleScope scope(isolate);
1625 ASSERT(args.length() == 1); 1678 ASSERT(args.length() == 1);
1626 CONVERT_ARG_HANDLE_CHECKED(JSMap, holder, 0); 1679 CONVERT_ARG_HANDLE_CHECKED(JSMap, holder, 0);
1627 Handle<OrderedHashMap> table(OrderedHashMap::cast(holder->table())); 1680 Handle<OrderedHashMap> table(OrderedHashMap::cast(holder->table()));
1628 return Smi::FromInt(table->NumberOfElements()); 1681 return Smi::FromInt(table->NumberOfElements());
1629 } 1682 }
1630 1683
1631 1684
1685 RUNTIME_FUNCTION(MaybeObject*, Runtime_MapCreateIterator) {
1686 HandleScope scope(isolate);
1687 ASSERT(args.length() == 2);
1688 CONVERT_ARG_HANDLE_CHECKED(JSMap, holder, 0);
1689 CONVERT_SMI_ARG_CHECKED(kind, 1)
1690 ASSERT(kind == JSMapIterator::kKindKeys
1691 || kind == JSMapIterator::kKindValues
1692 || kind == JSMapIterator::kKindEntries);
1693 Handle<OrderedHashMap> table(OrderedHashMap::cast(holder->table()));
1694 Handle<JSMapIterator> iterator = JSMapIterator::Create(table, kind);
1695 return *iterator;
1696 }
1697
1698
1699 RUNTIME_FUNCTION(MaybeObject*, Runtime_MapIteratorNext) {
1700 HandleScope scope(isolate);
1701 ASSERT(args.length() == 1);
1702 CONVERT_ARG_HANDLE_CHECKED(JSMapIterator, holder, 0);
1703 Handle<JSObject> result = JSMapIterator::Next(holder);
1704 return *result;
1705 }
1706
1707
1708 RUNTIME_FUNCTION(MaybeObject*, Runtime_MapIteratorClose) {
1709 HandleScope scope(isolate);
1710 ASSERT(args.length() == 1);
1711 CONVERT_ARG_HANDLE_CHECKED(JSMapIterator, holder, 0);
1712 holder->Close();
1713 return isolate->heap()->undefined_value();
1714 }
1715
1716
1632 static JSWeakCollection* WeakCollectionInitialize(Isolate* isolate, 1717 static JSWeakCollection* WeakCollectionInitialize(Isolate* isolate,
1633 Handle<JSWeakCollection> weak_collection) { 1718 Handle<JSWeakCollection> weak_collection) {
1634 ASSERT(weak_collection->map()->inobject_properties() == 0); 1719 ASSERT(weak_collection->map()->inobject_properties() == 0);
1635 Handle<ObjectHashTable> table = isolate->factory()->NewObjectHashTable(0); 1720 Handle<ObjectHashTable> table = isolate->factory()->NewObjectHashTable(0);
1636 weak_collection->set_table(*table); 1721 weak_collection->set_table(*table);
1637 weak_collection->set_next(Smi::FromInt(0)); 1722 weak_collection->set_next(Smi::FromInt(0));
1638 return *weak_collection; 1723 return *weak_collection;
1639 } 1724 }
1640 1725
1641 1726
(...skipping 13441 matching lines...) Expand 10 before | Expand all | Expand 10 after
15083 } 15168 }
15084 } 15169 }
15085 15170
15086 15171
15087 void Runtime::OutOfMemory() { 15172 void Runtime::OutOfMemory() {
15088 Heap::FatalProcessOutOfMemory("CALL_AND_RETRY_LAST", true); 15173 Heap::FatalProcessOutOfMemory("CALL_AND_RETRY_LAST", true);
15089 UNREACHABLE(); 15174 UNREACHABLE();
15090 } 15175 }
15091 15176
15092 } } // namespace v8::internal 15177 } } // namespace v8::internal
OLDNEW
« src/objects-printer.cc ('K') | « src/runtime.h ('k') | src/x64/full-codegen-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698