OLD | NEW |
1 // Copyright 2017 the V8 project authors. All rights reserved. | 1 // Copyright 2017 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/map-updater.h" | 5 #include "src/map-updater.h" |
6 | 6 |
7 #include "src/field-type.h" | 7 #include "src/field-type.h" |
8 #include "src/handles.h" | 8 #include "src/handles.h" |
9 #include "src/isolate.h" | 9 #include "src/isolate.h" |
10 #include "src/objects-inl.h" | 10 #include "src/objects-inl.h" |
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 GetOrComputeFieldType(i, old_details.location(), next_representation); | 427 GetOrComputeFieldType(i, old_details.location(), next_representation); |
428 | 428 |
429 Handle<FieldType> target_field_type = | 429 Handle<FieldType> target_field_type = |
430 GetOrComputeFieldType(target_descriptors, i, | 430 GetOrComputeFieldType(target_descriptors, i, |
431 target_details.location(), next_representation); | 431 target_details.location(), next_representation); |
432 | 432 |
433 Handle<FieldType> next_field_type = Map::GeneralizeFieldType( | 433 Handle<FieldType> next_field_type = Map::GeneralizeFieldType( |
434 old_details.representation(), old_field_type, next_representation, | 434 old_details.representation(), old_field_type, next_representation, |
435 target_field_type, isolate_); | 435 target_field_type, isolate_); |
436 | 436 |
437 Handle<Object> wrapped_type(Map::WrapType(next_field_type)); | 437 Handle<Object> wrapped_type(Map::WrapFieldType(next_field_type)); |
438 Descriptor d; | 438 Descriptor d; |
439 if (next_kind == kData) { | 439 if (next_kind == kData) { |
440 d = Descriptor::DataField(key, current_offset, wrapped_type, | 440 d = Descriptor::DataField(key, current_offset, wrapped_type, |
441 next_attributes, next_representation); | 441 next_attributes, next_representation); |
442 } else { | 442 } else { |
443 // TODO(ishell): mutable accessors are not implemented yet. | 443 // TODO(ishell): mutable accessors are not implemented yet. |
444 UNIMPLEMENTED(); | 444 UNIMPLEMENTED(); |
445 } | 445 } |
446 current_offset += d.GetDetails().field_width_in_words(); | 446 current_offset += d.GetDetails().field_width_in_words(); |
447 new_descriptors->Set(i, &d); | 447 new_descriptors->Set(i, &d); |
(...skipping 21 matching lines...) Expand all Loading... |
469 PropertyKind next_kind = old_details.kind(); | 469 PropertyKind next_kind = old_details.kind(); |
470 PropertyAttributes next_attributes = old_details.attributes(); | 470 PropertyAttributes next_attributes = old_details.attributes(); |
471 PropertyLocation next_location = old_details.location(); | 471 PropertyLocation next_location = old_details.location(); |
472 Representation next_representation = old_details.representation(); | 472 Representation next_representation = old_details.representation(); |
473 | 473 |
474 Descriptor d; | 474 Descriptor d; |
475 if (next_location == kField) { | 475 if (next_location == kField) { |
476 Handle<FieldType> old_field_type = | 476 Handle<FieldType> old_field_type = |
477 GetOrComputeFieldType(i, old_details.location(), next_representation); | 477 GetOrComputeFieldType(i, old_details.location(), next_representation); |
478 | 478 |
479 Handle<Object> wrapped_type(Map::WrapType(old_field_type)); | 479 Handle<Object> wrapped_type(Map::WrapFieldType(old_field_type)); |
480 Descriptor d; | 480 Descriptor d; |
481 if (next_kind == kData) { | 481 if (next_kind == kData) { |
482 d = Descriptor::DataField(key, current_offset, wrapped_type, | 482 d = Descriptor::DataField(key, current_offset, wrapped_type, |
483 next_attributes, next_representation); | 483 next_attributes, next_representation); |
484 } else { | 484 } else { |
485 // TODO(ishell): mutable accessors are not implemented yet. | 485 // TODO(ishell): mutable accessors are not implemented yet. |
486 UNIMPLEMENTED(); | 486 UNIMPLEMENTED(); |
487 } | 487 } |
488 current_offset += d.GetDetails().field_width_in_words(); | 488 current_offset += d.GetDetails().field_width_in_words(); |
489 new_descriptors->Set(i, &d); | 489 new_descriptors->Set(i, &d); |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
609 // the new descriptors to maintain descriptors sharing invariant. | 609 // the new descriptors to maintain descriptors sharing invariant. |
610 split_map->ReplaceDescriptors(*new_descriptors, *new_layout_descriptor); | 610 split_map->ReplaceDescriptors(*new_descriptors, *new_layout_descriptor); |
611 | 611 |
612 result_map_ = new_map; | 612 result_map_ = new_map; |
613 state_ = kEnd; | 613 state_ = kEnd; |
614 return state_; // Done. | 614 return state_; // Done. |
615 } | 615 } |
616 | 616 |
617 } // namespace internal | 617 } // namespace internal |
618 } // namespace v8 | 618 } // namespace v8 |
OLD | NEW |