| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 <stdlib.h> | 5 #include <stdlib.h> |
| 6 #include <utility> | 6 #include <utility> |
| 7 | 7 |
| 8 #include "src/v8.h" | 8 #include "src/v8.h" |
| 9 | 9 |
| 10 #include "src/compilation-cache.h" | 10 #include "src/compilation-cache.h" |
| (...skipping 767 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 778 for (int i = 0; i < number_of_descriptors; i++) { | 778 for (int i = 0; i < number_of_descriptors; i++) { |
| 779 PropertyDetails details = descriptors->GetDetails(i); | 779 PropertyDetails details = descriptors->GetDetails(i); |
| 780 map = maps[i]; | 780 map = maps[i]; |
| 781 LayoutDescriptor* layout_desc = map->layout_descriptor(); | 781 LayoutDescriptor* layout_desc = map->layout_descriptor(); |
| 782 | 782 |
| 783 if (layout_desc->IsSlowLayout()) { | 783 if (layout_desc->IsSlowLayout()) { |
| 784 switched_to_slow_mode = true; | 784 switched_to_slow_mode = true; |
| 785 CHECK_EQ(*full_layout_descriptor, layout_desc); | 785 CHECK_EQ(*full_layout_descriptor, layout_desc); |
| 786 } else { | 786 } else { |
| 787 CHECK(!switched_to_slow_mode); | 787 CHECK(!switched_to_slow_mode); |
| 788 if (details.type() == DATA) { | 788 if (details.location() == kField) { |
| 789 nof++; | 789 nof++; |
| 790 int field_index = details.field_index(); | 790 int field_index = details.field_index(); |
| 791 int field_width_in_words = details.field_width_in_words(); | 791 int field_width_in_words = details.field_width_in_words(); |
| 792 | 792 |
| 793 bool is_inobject = field_index < map->GetInObjectProperties(); | 793 bool is_inobject = field_index < map->GetInObjectProperties(); |
| 794 for (int bit = 0; bit < field_width_in_words; bit++) { | 794 for (int bit = 0; bit < field_width_in_words; bit++) { |
| 795 CHECK_EQ(is_inobject && details.representation().IsDouble(), | 795 CHECK_EQ(is_inobject && details.representation().IsDouble(), |
| 796 !layout_desc->IsTagged(field_index + bit)); | 796 !layout_desc->IsTagged(field_index + bit)); |
| 797 } | 797 } |
| 798 CHECK(layout_desc->IsTagged(field_index + field_width_in_words)); | 798 CHECK(layout_desc->IsTagged(field_index + field_width_in_words)); |
| (...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1186 | 1186 |
| 1187 LayoutDescriptorHelper helper(*map); | 1187 LayoutDescriptorHelper helper(*map); |
| 1188 bool all_fields_tagged = true; | 1188 bool all_fields_tagged = true; |
| 1189 | 1189 |
| 1190 int instance_size = map->instance_size(); | 1190 int instance_size = map->instance_size(); |
| 1191 | 1191 |
| 1192 int end_offset = instance_size * 2; | 1192 int end_offset = instance_size * 2; |
| 1193 int first_non_tagged_field_offset = end_offset; | 1193 int first_non_tagged_field_offset = end_offset; |
| 1194 for (int i = 0; i < number_of_descriptors; i++) { | 1194 for (int i = 0; i < number_of_descriptors; i++) { |
| 1195 PropertyDetails details = descriptors->GetDetails(i); | 1195 PropertyDetails details = descriptors->GetDetails(i); |
| 1196 if (details.type() != DATA) continue; | 1196 if (details.location() != kField) continue; |
| 1197 FieldIndex index = FieldIndex::ForDescriptor(*map, i); | 1197 FieldIndex index = FieldIndex::ForDescriptor(*map, i); |
| 1198 if (!index.is_inobject()) continue; | 1198 if (!index.is_inobject()) continue; |
| 1199 all_fields_tagged &= !details.representation().IsDouble(); | 1199 all_fields_tagged &= !details.representation().IsDouble(); |
| 1200 bool expected_tagged = !index.is_double(); | 1200 bool expected_tagged = !index.is_double(); |
| 1201 if (!expected_tagged) { | 1201 if (!expected_tagged) { |
| 1202 first_non_tagged_field_offset = | 1202 first_non_tagged_field_offset = |
| 1203 Min(first_non_tagged_field_offset, index.offset()); | 1203 Min(first_non_tagged_field_offset, index.offset()); |
| 1204 } | 1204 } |
| 1205 | 1205 |
| 1206 int end_of_region_offset; | 1206 int end_of_region_offset; |
| (...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1556 | 1556 |
| 1557 // TODO(ishell): add respective tests for property kind reconfiguring from | 1557 // TODO(ishell): add respective tests for property kind reconfiguring from |
| 1558 // accessor field to double, once accessor fields are supported by | 1558 // accessor field to double, once accessor fields are supported by |
| 1559 // Map::ReconfigureProperty(). | 1559 // Map::ReconfigureProperty(). |
| 1560 | 1560 |
| 1561 | 1561 |
| 1562 // TODO(ishell): add respective tests for fast property removal case once | 1562 // TODO(ishell): add respective tests for fast property removal case once |
| 1563 // Map::ReconfigureProperty() supports that. | 1563 // Map::ReconfigureProperty() supports that. |
| 1564 | 1564 |
| 1565 #endif | 1565 #endif |
| OLD | NEW |