| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 JSSetIterator::Create(ordered_set, JSSetIterator::kKindValues); | 68 JSSetIterator::Create(ordered_set, JSSetIterator::kKindValues); |
| 69 Handle<JSSetIterator> value_iterator_2 = | 69 Handle<JSSetIterator> value_iterator_2 = |
| 70 JSSetIterator::Create(ordered_set, JSSetIterator::kKindValues); | 70 JSSetIterator::Create(ordered_set, JSSetIterator::kKindValues); |
| 71 | 71 |
| 72 Handle<Map> map = factory->NewMap(JS_OBJECT_TYPE, JSObject::kHeaderSize); | 72 Handle<Map> map = factory->NewMap(JS_OBJECT_TYPE, JSObject::kHeaderSize); |
| 73 Handle<JSObject> obj = factory->NewJSObjectFromMap(map); | 73 Handle<JSObject> obj = factory->NewJSObjectFromMap(map); |
| 74 CHECK(!ordered_set->Contains(obj)); | 74 CHECK(!ordered_set->Contains(obj)); |
| 75 ordered_set = OrderedHashSet::Add(ordered_set, obj); | 75 ordered_set = OrderedHashSet::Add(ordered_set, obj); |
| 76 CHECK_EQ(1, ordered_set->NumberOfElements()); | 76 CHECK_EQ(1, ordered_set->NumberOfElements()); |
| 77 CHECK(ordered_set->Contains(obj)); | 77 CHECK(ordered_set->Contains(obj)); |
| 78 ordered_set = OrderedHashSet::Remove(ordered_set, obj); | 78 bool was_present = false; |
| 79 ordered_set = OrderedHashSet::Remove(ordered_set, obj, &was_present); |
| 80 CHECK(was_present); |
| 79 CHECK_EQ(0, ordered_set->NumberOfElements()); | 81 CHECK_EQ(0, ordered_set->NumberOfElements()); |
| 80 CHECK(!ordered_set->Contains(obj)); | 82 CHECK(!ordered_set->Contains(obj)); |
| 81 | 83 |
| 84 // Removing a not-present object should set was_present to false. |
| 85 ordered_set = OrderedHashSet::Remove(ordered_set, obj, &was_present); |
| 86 CHECK(!was_present); |
| 87 |
| 82 // Test for collisions/chaining | 88 // Test for collisions/chaining |
| 83 Handle<JSObject> obj1 = factory->NewJSObjectFromMap(map); | 89 Handle<JSObject> obj1 = factory->NewJSObjectFromMap(map); |
| 84 ordered_set = OrderedHashSet::Add(ordered_set, obj1); | 90 ordered_set = OrderedHashSet::Add(ordered_set, obj1); |
| 85 Handle<JSObject> obj2 = factory->NewJSObjectFromMap(map); | 91 Handle<JSObject> obj2 = factory->NewJSObjectFromMap(map); |
| 86 ordered_set = OrderedHashSet::Add(ordered_set, obj2); | 92 ordered_set = OrderedHashSet::Add(ordered_set, obj2); |
| 87 Handle<JSObject> obj3 = factory->NewJSObjectFromMap(map); | 93 Handle<JSObject> obj3 = factory->NewJSObjectFromMap(map); |
| 88 ordered_set = OrderedHashSet::Add(ordered_set, obj3); | 94 ordered_set = OrderedHashSet::Add(ordered_set, obj3); |
| 89 CHECK_EQ(3, ordered_set->NumberOfElements()); | 95 CHECK_EQ(3, ordered_set->NumberOfElements()); |
| 90 CHECK(ordered_set->Contains(obj1)); | 96 CHECK(ordered_set->Contains(obj1)); |
| 91 CHECK(ordered_set->Contains(obj2)); | 97 CHECK(ordered_set->Contains(obj2)); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 CheckIterResultObject( | 132 CheckIterResultObject( |
| 127 isolate, JSSetIterator::Next(value_iterator_2), obj, false); | 133 isolate, JSSetIterator::Next(value_iterator_2), obj, false); |
| 128 CheckIterResultObject( | 134 CheckIterResultObject( |
| 129 isolate, JSSetIterator::Next(value_iterator_2), obj4, false); | 135 isolate, JSSetIterator::Next(value_iterator_2), obj4, false); |
| 130 CheckIterResultObject(isolate, | 136 CheckIterResultObject(isolate, |
| 131 JSSetIterator::Next(value_iterator_2), | 137 JSSetIterator::Next(value_iterator_2), |
| 132 factory->undefined_value(), | 138 factory->undefined_value(), |
| 133 true); | 139 true); |
| 134 | 140 |
| 135 // Test shrinking | 141 // Test shrinking |
| 136 ordered_set = OrderedHashSet::Remove(ordered_set, obj); | 142 ordered_set = OrderedHashSet::Remove(ordered_set, obj, &was_present); |
| 137 ordered_set = OrderedHashSet::Remove(ordered_set, obj1); | 143 CHECK(was_present); |
| 138 ordered_set = OrderedHashSet::Remove(ordered_set, obj2); | 144 ordered_set = OrderedHashSet::Remove(ordered_set, obj1, &was_present); |
| 139 ordered_set = OrderedHashSet::Remove(ordered_set, obj3); | 145 CHECK(was_present); |
| 146 ordered_set = OrderedHashSet::Remove(ordered_set, obj2, &was_present); |
| 147 CHECK(was_present); |
| 148 ordered_set = OrderedHashSet::Remove(ordered_set, obj3, &was_present); |
| 149 CHECK(was_present); |
| 140 CHECK_EQ(1, ordered_set->NumberOfElements()); | 150 CHECK_EQ(1, ordered_set->NumberOfElements()); |
| 141 CHECK_EQ(2, ordered_set->NumberOfBuckets()); | 151 CHECK_EQ(2, ordered_set->NumberOfBuckets()); |
| 142 } | 152 } |
| 143 | 153 |
| 144 | 154 |
| 145 TEST(Map) { | 155 TEST(Map) { |
| 146 i::FLAG_harmony_collections = true; | 156 i::FLAG_harmony_collections = true; |
| 147 | 157 |
| 148 LocalContext context; | 158 LocalContext context; |
| 149 Isolate* isolate = CcTest::i_isolate(); | 159 Isolate* isolate = CcTest::i_isolate(); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 ordered_map = OrderedHashMap::Put( | 245 ordered_map = OrderedHashMap::Put( |
| 236 ordered_map, obj2, factory->the_hole_value()); | 246 ordered_map, obj2, factory->the_hole_value()); |
| 237 ordered_map = OrderedHashMap::Put( | 247 ordered_map = OrderedHashMap::Put( |
| 238 ordered_map, obj3, factory->the_hole_value()); | 248 ordered_map, obj3, factory->the_hole_value()); |
| 239 CHECK_EQ(1, ordered_map->NumberOfElements()); | 249 CHECK_EQ(1, ordered_map->NumberOfElements()); |
| 240 CHECK_EQ(2, ordered_map->NumberOfBuckets()); | 250 CHECK_EQ(2, ordered_map->NumberOfBuckets()); |
| 241 } | 251 } |
| 242 | 252 |
| 243 | 253 |
| 244 } | 254 } |
| OLD | NEW |