| OLD | NEW |
| 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/v8.h" | 5 #include "src/v8.h" |
| 6 | 6 |
| 7 #include "src/disasm.h" | 7 #include "src/disasm.h" |
| 8 #include "src/disassembler.h" | 8 #include "src/disassembler.h" |
| 9 #include "src/heap/objects-visiting.h" | 9 #include "src/heap/objects-visiting.h" |
| 10 #include "src/jsregexp.h" | 10 #include "src/jsregexp.h" |
| (...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 670 last_gc_pc = it.rinfo()->pc(); | 670 last_gc_pc = it.rinfo()->pc(); |
| 671 } | 671 } |
| 672 } | 672 } |
| 673 CHECK(raw_type_feedback_info() == Smi::FromInt(0) || | 673 CHECK(raw_type_feedback_info() == Smi::FromInt(0) || |
| 674 raw_type_feedback_info()->IsSmi() == IsCodeStubOrIC()); | 674 raw_type_feedback_info()->IsSmi() == IsCodeStubOrIC()); |
| 675 } | 675 } |
| 676 | 676 |
| 677 | 677 |
| 678 void Code::VerifyEmbeddedObjectsDependency() { | 678 void Code::VerifyEmbeddedObjectsDependency() { |
| 679 if (!CanContainWeakObjects()) return; | 679 if (!CanContainWeakObjects()) return; |
| 680 WeakCell* cell = CachedWeakCell(); |
| 680 DisallowHeapAllocation no_gc; | 681 DisallowHeapAllocation no_gc; |
| 681 Isolate* isolate = GetIsolate(); | 682 Isolate* isolate = GetIsolate(); |
| 682 HandleScope scope(isolate); | 683 HandleScope scope(isolate); |
| 683 int mode_mask = RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT); | 684 int mode_mask = RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT); |
| 684 for (RelocIterator it(this, mode_mask); !it.done(); it.next()) { | 685 for (RelocIterator it(this, mode_mask); !it.done(); it.next()) { |
| 685 Object* obj = it.rinfo()->target_object(); | 686 Object* obj = it.rinfo()->target_object(); |
| 686 if (IsWeakObject(obj)) { | 687 if (IsWeakObject(obj)) { |
| 687 if (obj->IsMap()) { | 688 if (obj->IsMap()) { |
| 688 Map* map = Map::cast(obj); | 689 Map* map = Map::cast(obj); |
| 689 CHECK(map->dependent_code()->Contains(DependentCode::kWeakCodeGroup, | 690 CHECK(map->dependent_code()->Contains(DependentCode::kWeakCodeGroup, |
| 690 this)); | 691 cell)); |
| 691 } else if (obj->IsJSObject()) { | 692 } else if (obj->IsJSObject()) { |
| 692 Object* raw_table = GetIsolate()->heap()->weak_object_to_code_table(); | 693 WeakHashTable* table = |
| 693 WeakHashTable* table = WeakHashTable::cast(raw_table); | 694 GetIsolate()->heap()->weak_object_to_code_table(); |
| 694 Handle<Object> key_obj(obj, isolate); | 695 Handle<HeapObject> key_obj(HeapObject::cast(obj), isolate); |
| 695 CHECK(DependentCode::cast(table->Lookup(key_obj))->Contains( | 696 CHECK(DependentCode::cast(table->Lookup(key_obj)) |
| 696 DependentCode::kWeakCodeGroup, this)); | 697 ->Contains(DependentCode::kWeakCodeGroup, cell)); |
| 697 } | 698 } |
| 698 } | 699 } |
| 699 } | 700 } |
| 700 } | 701 } |
| 701 | 702 |
| 702 | 703 |
| 703 void JSArray::JSArrayVerify() { | 704 void JSArray::JSArrayVerify() { |
| 704 JSObjectVerify(); | 705 JSObjectVerify(); |
| 705 CHECK(length()->IsNumber() || length()->IsUndefined()); | 706 CHECK(length()->IsNumber() || length()->IsUndefined()); |
| 706 // If a GC was caused while constructing this array, the elements | 707 // If a GC was caused while constructing this array, the elements |
| (...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1278 ? it.rinfo()->target_cell() | 1279 ? it.rinfo()->target_cell() |
| 1279 : it.rinfo()->target_object(); | 1280 : it.rinfo()->target_object(); |
| 1280 CHECK(!CanLeak(target, heap, skip_weak_cell)); | 1281 CHECK(!CanLeak(target, heap, skip_weak_cell)); |
| 1281 } | 1282 } |
| 1282 } | 1283 } |
| 1283 | 1284 |
| 1284 | 1285 |
| 1285 #endif // DEBUG | 1286 #endif // DEBUG |
| 1286 | 1287 |
| 1287 } } // namespace v8::internal | 1288 } } // namespace v8::internal |
| OLD | NEW |