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

Side by Side Diff: src/objects-debug.cc

Issue 2405253006: [builtins] implement Array.prototype[@@iterator] in TFJ builtins (Closed)
Patch Set: add array_iterator_protector, and check array_protector in holey fast arrays Created 4 years, 2 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/objects.h" 5 #include "src/objects.h"
6 6
7 #include "src/bootstrapper.h" 7 #include "src/bootstrapper.h"
8 #include "src/disasm.h" 8 #include "src/disasm.h"
9 #include "src/disassembler.h" 9 #include "src/disassembler.h"
10 #include "src/field-type.h" 10 #include "src/field-type.h"
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 break; 151 break;
152 case JS_MAP_TYPE: 152 case JS_MAP_TYPE:
153 JSMap::cast(this)->JSMapVerify(); 153 JSMap::cast(this)->JSMapVerify();
154 break; 154 break;
155 case JS_SET_ITERATOR_TYPE: 155 case JS_SET_ITERATOR_TYPE:
156 JSSetIterator::cast(this)->JSSetIteratorVerify(); 156 JSSetIterator::cast(this)->JSSetIteratorVerify();
157 break; 157 break;
158 case JS_MAP_ITERATOR_TYPE: 158 case JS_MAP_ITERATOR_TYPE:
159 JSMapIterator::cast(this)->JSMapIteratorVerify(); 159 JSMapIterator::cast(this)->JSMapIteratorVerify();
160 break; 160 break;
161 case JS_TYPED_ARRAY_KEY_ITERATOR_TYPE:
162 case JS_UINT8_ARRAY_KEY_VALUE_ITERATOR_TYPE:
163 case JS_INT8_ARRAY_KEY_VALUE_ITERATOR_TYPE:
164 case JS_UINT16_ARRAY_KEY_VALUE_ITERATOR_TYPE:
165 case JS_INT16_ARRAY_KEY_VALUE_ITERATOR_TYPE:
166 case JS_UINT32_ARRAY_KEY_VALUE_ITERATOR_TYPE:
167 case JS_INT32_ARRAY_KEY_VALUE_ITERATOR_TYPE:
168 case JS_FLOAT32_ARRAY_KEY_VALUE_ITERATOR_TYPE:
169 case JS_FLOAT64_ARRAY_KEY_VALUE_ITERATOR_TYPE:
170 case JS_UINT8_CLAMPED_ARRAY_KEY_VALUE_ITERATOR_TYPE:
171 case JS_UINT8_ARRAY_VALUE_ITERATOR_TYPE:
172 case JS_INT8_ARRAY_VALUE_ITERATOR_TYPE:
173 case JS_UINT16_ARRAY_VALUE_ITERATOR_TYPE:
174 case JS_INT16_ARRAY_VALUE_ITERATOR_TYPE:
175 case JS_UINT32_ARRAY_VALUE_ITERATOR_TYPE:
176 case JS_INT32_ARRAY_VALUE_ITERATOR_TYPE:
177 case JS_FLOAT32_ARRAY_VALUE_ITERATOR_TYPE:
178 case JS_FLOAT64_ARRAY_VALUE_ITERATOR_TYPE:
179 case JS_UINT8_CLAMPED_ARRAY_VALUE_ITERATOR_TYPE:
180 case JS_GENERIC_ARRAY_KEY_ITERATOR_TYPE:
181 case JS_FAST_ARRAY_KEY_VALUE_ITERATOR_TYPE:
182 case JS_FAST_HOLEY_ARRAY_KEY_VALUE_ITERATOR_TYPE:
183 case JS_FAST_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE:
184 case JS_FAST_HOLEY_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE:
185 case JS_FAST_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE:
186 case JS_FAST_HOLEY_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE:
187 case JS_GENERIC_ARRAY_KEY_VALUE_ITERATOR_TYPE:
188 case JS_FAST_ARRAY_VALUE_ITERATOR_TYPE:
189 case JS_FAST_HOLEY_ARRAY_VALUE_ITERATOR_TYPE:
190 case JS_FAST_SMI_ARRAY_VALUE_ITERATOR_TYPE:
191 case JS_FAST_HOLEY_SMI_ARRAY_VALUE_ITERATOR_TYPE:
192 case JS_FAST_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE:
193 case JS_FAST_HOLEY_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE:
194 case JS_GENERIC_ARRAY_VALUE_ITERATOR_TYPE:
195 JSArrayIterator::cast(this)->JSArrayIteratorVerify();
196 break;
197
161 case JS_STRING_ITERATOR_TYPE: 198 case JS_STRING_ITERATOR_TYPE:
162 JSStringIterator::cast(this)->JSStringIteratorVerify(); 199 JSStringIterator::cast(this)->JSStringIteratorVerify();
163 break; 200 break;
164 case JS_WEAK_MAP_TYPE: 201 case JS_WEAK_MAP_TYPE:
165 JSWeakMap::cast(this)->JSWeakMapVerify(); 202 JSWeakMap::cast(this)->JSWeakMapVerify();
166 break; 203 break;
167 case JS_WEAK_SET_TYPE: 204 case JS_WEAK_SET_TYPE:
168 JSWeakSet::cast(this)->JSWeakSetVerify(); 205 JSWeakSet::cast(this)->JSWeakSetVerify();
169 break; 206 break;
170 case JS_REGEXP_TYPE: 207 case JS_REGEXP_TYPE:
(...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 } 818 }
782 819
783 820
784 void JSWeakMap::JSWeakMapVerify() { 821 void JSWeakMap::JSWeakMapVerify() {
785 CHECK(IsJSWeakMap()); 822 CHECK(IsJSWeakMap());
786 JSObjectVerify(); 823 JSObjectVerify();
787 VerifyHeapPointer(table()); 824 VerifyHeapPointer(table());
788 CHECK(table()->IsHashTable() || table()->IsUndefined(GetIsolate())); 825 CHECK(table()->IsHashTable() || table()->IsUndefined(GetIsolate()));
789 } 826 }
790 827
828 void JSArrayIterator::JSArrayIteratorVerify() {
829 CHECK(IsJSArrayIterator());
830 JSObjectVerify();
831 CHECK(object()->IsJSReceiver() || object()->IsUndefined(GetIsolate()));
832
833 CHECK_GE(index()->Number(), 0);
834 CHECK_LE(index()->Number(), kMaxSafeInteger);
835 CHECK(object_map()->IsMap() || object_map()->IsUndefined(GetIsolate()));
836 }
837
791 void JSStringIterator::JSStringIteratorVerify() { 838 void JSStringIterator::JSStringIteratorVerify() {
792 CHECK(IsJSStringIterator()); 839 CHECK(IsJSStringIterator());
793 JSObjectVerify(); 840 JSObjectVerify();
794 CHECK(string()->IsString()); 841 CHECK(string()->IsString());
795 842
796 CHECK_GE(index(), 0); 843 CHECK_GE(index(), 0);
797 CHECK_LE(index(), String::kMaxLength); 844 CHECK_LE(index(), String::kMaxLength);
798 } 845 }
799 846
800 void JSWeakSet::JSWeakSetVerify() { 847 void JSWeakSet::JSWeakSetVerify() {
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after
1408 1455
1409 // Both are done at the same time. 1456 // Both are done at the same time.
1410 CHECK_EQ(new_it.done(), old_it.done()); 1457 CHECK_EQ(new_it.done(), old_it.done());
1411 } 1458 }
1412 1459
1413 1460
1414 #endif // DEBUG 1461 #endif // DEBUG
1415 1462
1416 } // namespace internal 1463 } // namespace internal
1417 } // namespace v8 1464 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698