| Index: src/objects-visiting-inl.h | 
| diff --git a/src/objects-visiting-inl.h b/src/objects-visiting-inl.h | 
| index 057b8ae99ffc3651e80b729c6f96f9335cb342a3..d5681b8746876c3bcb2e3b6574bf0a42c12798a7 100644 | 
| --- a/src/objects-visiting-inl.h | 
| +++ b/src/objects-visiting-inl.h | 
| @@ -498,23 +498,24 @@ template<typename StaticVisitor> | 
| void StaticMarkingVisitor<StaticVisitor>::VisitConstantPoolArray( | 
| Map* map, HeapObject* object) { | 
| Heap* heap = map->GetHeap(); | 
| -  ConstantPoolArray* constant_pool = ConstantPoolArray::cast(object); | 
| -  for (int i = 0; i < constant_pool->count_of_code_ptr_entries(); i++) { | 
| -    int index = constant_pool->first_code_ptr_index() + i; | 
| -    Address code_entry = | 
| -        reinterpret_cast<Address>(constant_pool->RawFieldOfElementAt(index)); | 
| +  ConstantPoolArray* array = ConstantPoolArray::cast(object); | 
| +  ConstantPoolArray::Iterator code_iter(array, ConstantPoolArray::CODE_PTR); | 
| +  while (!code_iter.is_finished()) { | 
| +    Address code_entry = reinterpret_cast<Address>( | 
| +        array->RawFieldOfElementAt(code_iter.next_index())); | 
| StaticVisitor::VisitCodeEntry(heap, code_entry); | 
| } | 
| -  for (int i = 0; i < constant_pool->count_of_heap_ptr_entries(); i++) { | 
| -    int index = constant_pool->first_heap_ptr_index() + i; | 
| -    Object** slot = constant_pool->RawFieldOfElementAt(index); | 
| + | 
| +  ConstantPoolArray::Iterator heap_iter(array, ConstantPoolArray::HEAP_PTR); | 
| +  while (!heap_iter.is_finished()) { | 
| +    Object** slot = array->RawFieldOfElementAt(heap_iter.next_index()); | 
| HeapObject* object = HeapObject::cast(*slot); | 
| heap->mark_compact_collector()->RecordSlot(slot, slot, object); | 
| bool is_weak_object = | 
| -        (constant_pool->get_weak_object_state() == | 
| +        (array->get_weak_object_state() == | 
| ConstantPoolArray::WEAK_OBJECTS_IN_OPTIMIZED_CODE && | 
| Code::IsWeakObjectInOptimizedCode(object)) || | 
| -        (constant_pool->get_weak_object_state() == | 
| +        (array->get_weak_object_state() == | 
| ConstantPoolArray::WEAK_OBJECTS_IN_IC && | 
| Code::IsWeakObjectInIC(object)); | 
| if (!is_weak_object) { | 
|  |