// Helper functions.
//
+
+static void InitializeVerifiedMapDescriptors(
+ Map* map, DescriptorArray* descriptors,
+ LayoutDescriptor* layout_descriptor) {
+ map->InitializeDescriptors(descriptors, layout_descriptor);
+#ifdef VERIFY_HEAP
+ if (FLAG_verify_heap) {
+ DCHECK(layout_descriptor->IsConsistentWithMap(map));
+ }
+#endif
+}
+
+
static Handle<String> MakeString(const char* str) {
Isolate* isolate = CcTest::i_isolate();
Factory* factory = isolate->factory();
layout_descriptor = LayoutDescriptor::New(map, descriptors, kPropsCount);
CHECK_EQ(LayoutDescriptor::FastPointerLayout(), *layout_descriptor);
CHECK_EQ(kSmiValueSize, layout_descriptor->capacity());
- map->InitializeDescriptors(*descriptors, *layout_descriptor);
- DCHECK(layout_descriptor->IsConsistentWithMap(*map));
+ InitializeVerifiedMapDescriptors(*map, *descriptors, *layout_descriptor);
}
props[0] = PROP_DOUBLE;
for (int i = 1; i < kPropsCount; i++) {
CHECK_EQ(true, layout_descriptor->IsTagged(i));
}
- map->InitializeDescriptors(*descriptors, *layout_descriptor);
- DCHECK(layout_descriptor->IsConsistentWithMap(*map));
+ InitializeVerifiedMapDescriptors(*map, *descriptors, *layout_descriptor);
}
{
CHECK_EQ(true, layout_descriptor->IsTagged(i));
}
- map->InitializeDescriptors(*descriptors, *layout_descriptor);
- DCHECK(layout_descriptor->IsConsistentWithMap(*map));
+ InitializeVerifiedMapDescriptors(*map, *descriptors, *layout_descriptor);
// Here we have truly slow layout descriptor, so play with the bits.
CHECK_EQ(true, layout_descriptor->IsTagged(-1));
}
CHECK(layout_desc->IsSlowLayout());
CHECK(!layout_desc->IsFastPointerLayout());
-
- DCHECK(layout_descriptor->IsConsistentWithMap(*map));
+#ifdef VERIFY_HEAP
+ if (FLAG_verify_heap) {
+ DCHECK(layout_descriptor->IsConsistentWithMap(*map));
+ }
+#endif
}
}
Handle<Map> map = Map::Create(isolate, 0);
layout_descriptor = LayoutDescriptor::New(map, descriptors, kPropsCount);
CHECK_EQ(LayoutDescriptor::FastPointerLayout(), *layout_descriptor);
- map->InitializeDescriptors(*descriptors, *layout_descriptor);
- DCHECK(layout_descriptor->IsConsistentWithMap(*map));
+ InitializeVerifiedMapDescriptors(*map, *descriptors, *layout_descriptor);
}
{
Handle<Map> map = Map::Create(isolate, 1);
layout_descriptor = LayoutDescriptor::New(map, descriptors, kPropsCount);
CHECK_EQ(LayoutDescriptor::FastPointerLayout(), *layout_descriptor);
- map->InitializeDescriptors(*descriptors, *layout_descriptor);
- DCHECK(layout_descriptor->IsConsistentWithMap(*map));
+ InitializeVerifiedMapDescriptors(*map, *descriptors, *layout_descriptor);
}
{
CHECK_EQ(false, layout_descriptor->IsTagged(1));
CHECK_EQ(true, layout_descriptor->IsTagged(2));
CHECK_EQ(true, layout_descriptor->IsTagged(125));
- map->InitializeDescriptors(*descriptors, *layout_descriptor);
- DCHECK(layout_descriptor->IsConsistentWithMap(*map));
+ InitializeVerifiedMapDescriptors(*map, *descriptors, *layout_descriptor);
}
}
Handle<Map> map = Map::Create(isolate, 0);
layout_descriptor = LayoutDescriptor::New(map, descriptors, kPropsCount);
CHECK_EQ(LayoutDescriptor::FastPointerLayout(), *layout_descriptor);
- map->InitializeDescriptors(*descriptors, *layout_descriptor);
- DCHECK(layout_descriptor->IsConsistentWithMap(*map));
+ InitializeVerifiedMapDescriptors(*map, *descriptors, *layout_descriptor);
}
{
Handle<Map> map = Map::Create(isolate, 1);
layout_descriptor = LayoutDescriptor::New(map, descriptors, kPropsCount);
CHECK_EQ(LayoutDescriptor::FastPointerLayout(), *layout_descriptor);
- map->InitializeDescriptors(*descriptors, *layout_descriptor);
- DCHECK(layout_descriptor->IsConsistentWithMap(*map));
+ InitializeVerifiedMapDescriptors(*map, *descriptors, *layout_descriptor);
}
{
CHECK_EQ(false, layout_descriptor->IsTagged(1));
CHECK_EQ(true, layout_descriptor->IsTagged(2));
CHECK_EQ(true, layout_descriptor->IsTagged(125));
- map->InitializeDescriptors(*descriptors, *layout_descriptor);
- DCHECK(layout_descriptor->IsConsistentWithMap(*map));
+ InitializeVerifiedMapDescriptors(*map, *descriptors, *layout_descriptor);
}
{
for (int i = inobject_properties; i < kPropsCount; i++) {
CHECK_EQ(true, layout_descriptor->IsTagged(i));
}
- map->InitializeDescriptors(*descriptors, *layout_descriptor);
- DCHECK(layout_descriptor->IsConsistentWithMap(*map));
+ InitializeVerifiedMapDescriptors(*map, *descriptors, *layout_descriptor);
// Now test LayoutDescriptor::cast_gc_safe().
Handle<LayoutDescriptor> layout_descriptor_copy =
map->InitializeDescriptors(*descriptors, *layout_descriptor);
}
Handle<LayoutDescriptor> layout_descriptor(map->layout_descriptor(), isolate);
- DCHECK(layout_descriptor->IsConsistentWithMap(*map));
+#ifdef VERIFY_HEAP
+ if (FLAG_verify_heap) {
+ DCHECK(layout_descriptor->IsConsistentWithMap(*map));
+ }
+#endif
return layout_descriptor;
}
CHECK(layout_desc->IsTagged(field_index + field_width_in_words));
}
}
- DCHECK(map->layout_descriptor()->IsConsistentWithMap(*map));
+#ifdef VERIFY_HEAP
+ if (FLAG_verify_heap) {
+ DCHECK(map->layout_descriptor()->IsConsistentWithMap(*map));
+ }
+#endif
}
Handle<LayoutDescriptor> layout_descriptor(map->GetLayoutDescriptor(),
isolate);
- DCHECK(layout_descriptor->IsConsistentWithMap(*map));
+#ifdef VERIFY_HEAP
+ if (FLAG_verify_heap) {
+ DCHECK(layout_descriptor->IsConsistentWithMap(*map));
+ }
+#endif
return layout_descriptor;
}
Handle<LayoutDescriptor> layout_descriptor = LayoutDescriptor::New(
map, descriptors, descriptors->number_of_descriptors());
- map->InitializeDescriptors(*descriptors, *layout_descriptor);
- DCHECK(layout_descriptor->IsConsistentWithMap(*map));
+ InitializeVerifiedMapDescriptors(*map, *descriptors, *layout_descriptor);
LayoutDescriptorHelper helper(*map);
bool all_fields_tagged = true;
}
Handle<LayoutDescriptor> split_layout_descriptor(
split_map->layout_descriptor(), isolate);
- DCHECK(split_layout_descriptor->IsConsistentWithMap(*split_map));
+#ifdef VERIFY_HEAP
+ if (FLAG_verify_heap) {
+ DCHECK(split_layout_descriptor->IsConsistentWithMap(*split_map));
+ }
+#endif
CHECK(split_layout_descriptor->IsSlowLayout());
CHECK(split_map->owns_descriptors());
// Layout descriptors should be shared with |split_map|.
CHECK(map1->owns_descriptors());
CHECK_EQ(*split_layout_descriptor, map1->layout_descriptor());
- DCHECK(map1->layout_descriptor()->IsConsistentWithMap(*map1));
+#ifdef VERIFY_HEAP
+ if (FLAG_verify_heap) {
+ DCHECK(map1->layout_descriptor()->IsConsistentWithMap(*map1));
+ }
+#endif
Handle<Map> map2 = Map::CopyWithField(split_map, MakeString("bar"), any_type,
NONE, Representation::Tagged(),
// Layout descriptors should not be shared with |split_map|.
CHECK(map2->owns_descriptors());
CHECK_NE(*split_layout_descriptor, map2->layout_descriptor());
- DCHECK(map2->layout_descriptor()->IsConsistentWithMap(*map2));
+#ifdef VERIFY_HEAP
+ if (FLAG_verify_heap) {
+ DCHECK(map2->layout_descriptor()->IsConsistentWithMap(*map2));
+ }
+#endif
}