OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 break; | 149 break; |
150 case JS_BUILTINS_OBJECT_TYPE: | 150 case JS_BUILTINS_OBJECT_TYPE: |
151 JSBuiltinsObject::cast(this)->JSBuiltinsObjectVerify(); | 151 JSBuiltinsObject::cast(this)->JSBuiltinsObjectVerify(); |
152 break; | 152 break; |
153 case JS_GLOBAL_PROPERTY_CELL_TYPE: | 153 case JS_GLOBAL_PROPERTY_CELL_TYPE: |
154 JSGlobalPropertyCell::cast(this)->JSGlobalPropertyCellVerify(); | 154 JSGlobalPropertyCell::cast(this)->JSGlobalPropertyCellVerify(); |
155 break; | 155 break; |
156 case JS_ARRAY_TYPE: | 156 case JS_ARRAY_TYPE: |
157 JSArray::cast(this)->JSArrayVerify(); | 157 JSArray::cast(this)->JSArrayVerify(); |
158 break; | 158 break; |
| 159 case JS_SET_TYPE: |
| 160 JSSet::cast(this)->JSSetVerify(); |
| 161 break; |
| 162 case JS_MAP_TYPE: |
| 163 JSMap::cast(this)->JSMapVerify(); |
| 164 break; |
159 case JS_WEAK_MAP_TYPE: | 165 case JS_WEAK_MAP_TYPE: |
160 JSWeakMap::cast(this)->JSWeakMapVerify(); | 166 JSWeakMap::cast(this)->JSWeakMapVerify(); |
161 break; | 167 break; |
162 case JS_REGEXP_TYPE: | 168 case JS_REGEXP_TYPE: |
163 JSRegExp::cast(this)->JSRegExpVerify(); | 169 JSRegExp::cast(this)->JSRegExpVerify(); |
164 break; | 170 break; |
165 case FILLER_TYPE: | 171 case FILLER_TYPE: |
166 break; | 172 break; |
167 case JS_PROXY_TYPE: | 173 case JS_PROXY_TYPE: |
168 JSProxy::cast(this)->JSProxyVerify(); | 174 JSProxy::cast(this)->JSProxyVerify(); |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
256 | 262 |
257 | 263 |
258 void ExternalDoubleArray::ExternalDoubleArrayVerify() { | 264 void ExternalDoubleArray::ExternalDoubleArrayVerify() { |
259 ASSERT(IsExternalDoubleArray()); | 265 ASSERT(IsExternalDoubleArray()); |
260 } | 266 } |
261 | 267 |
262 | 268 |
263 void JSObject::JSObjectVerify() { | 269 void JSObject::JSObjectVerify() { |
264 VerifyHeapPointer(properties()); | 270 VerifyHeapPointer(properties()); |
265 VerifyHeapPointer(elements()); | 271 VerifyHeapPointer(elements()); |
| 272 |
| 273 if (GetElementsKind() == NON_STRICT_ARGUMENTS_ELEMENTS) { |
| 274 ASSERT(this->elements()->IsFixedArray()); |
| 275 ASSERT(this->elements()->length() >= 2); |
| 276 } |
| 277 |
266 if (HasFastProperties()) { | 278 if (HasFastProperties()) { |
267 CHECK_EQ(map()->unused_property_fields(), | 279 CHECK_EQ(map()->unused_property_fields(), |
268 (map()->inobject_properties() + properties()->length() - | 280 (map()->inobject_properties() + properties()->length() - |
269 map()->NextFreePropertyIndex())); | 281 map()->NextFreePropertyIndex())); |
270 } | 282 } |
271 ASSERT_EQ((map()->has_fast_elements() || map()->has_fast_smi_only_elements()), | 283 ASSERT_EQ((map()->has_fast_elements() || map()->has_fast_smi_only_elements()), |
272 (elements()->map() == GetHeap()->fixed_array_map() || | 284 (elements()->map() == GetHeap()->fixed_array_map() || |
273 elements()->map() == GetHeap()->fixed_cow_array_map())); | 285 elements()->map() == GetHeap()->fixed_cow_array_map())); |
274 ASSERT(map()->has_fast_elements() == HasFastElements()); | 286 ASSERT(map()->has_fast_elements() == HasFastElements()); |
275 } | 287 } |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
487 | 499 |
488 void JSArray::JSArrayVerify() { | 500 void JSArray::JSArrayVerify() { |
489 JSObjectVerify(); | 501 JSObjectVerify(); |
490 ASSERT(length()->IsNumber() || length()->IsUndefined()); | 502 ASSERT(length()->IsNumber() || length()->IsUndefined()); |
491 ASSERT(elements()->IsUndefined() || | 503 ASSERT(elements()->IsUndefined() || |
492 elements()->IsFixedArray() || | 504 elements()->IsFixedArray() || |
493 elements()->IsFixedDoubleArray()); | 505 elements()->IsFixedDoubleArray()); |
494 } | 506 } |
495 | 507 |
496 | 508 |
| 509 void JSSet::JSSetVerify() { |
| 510 CHECK(IsJSSet()); |
| 511 JSObjectVerify(); |
| 512 VerifyHeapPointer(table()); |
| 513 ASSERT(table()->IsHashTable() || table()->IsUndefined()); |
| 514 } |
| 515 |
| 516 |
| 517 void JSMap::JSMapVerify() { |
| 518 CHECK(IsJSMap()); |
| 519 JSObjectVerify(); |
| 520 VerifyHeapPointer(table()); |
| 521 ASSERT(table()->IsHashTable() || table()->IsUndefined()); |
| 522 } |
| 523 |
| 524 |
497 void JSWeakMap::JSWeakMapVerify() { | 525 void JSWeakMap::JSWeakMapVerify() { |
498 CHECK(IsJSWeakMap()); | 526 CHECK(IsJSWeakMap()); |
499 JSObjectVerify(); | 527 JSObjectVerify(); |
500 VerifyHeapPointer(table()); | 528 VerifyHeapPointer(table()); |
501 ASSERT(table()->IsHashTable() || table()->IsUndefined()); | 529 ASSERT(table()->IsHashTable() || table()->IsUndefined()); |
502 } | 530 } |
503 | 531 |
504 | 532 |
505 void JSRegExp::JSRegExpVerify() { | 533 void JSRegExp::JSRegExpVerify() { |
506 JSObjectVerify(); | 534 JSObjectVerify(); |
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
819 ASSERT(e->IsUndefined()); | 847 ASSERT(e->IsUndefined()); |
820 } | 848 } |
821 } | 849 } |
822 } | 850 } |
823 } | 851 } |
824 | 852 |
825 | 853 |
826 #endif // DEBUG | 854 #endif // DEBUG |
827 | 855 |
828 } } // namespace v8::internal | 856 } } // namespace v8::internal |
OLD | NEW |