Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1047)

Side by Side Diff: test/cctest/test-unboxed-doubles.cc

Issue 1073053006: Revert of LayoutDescriptor should inherit from JSTypedArray (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/objects-printer.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 563 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 } 574 }
575 InitializeVerifiedMapDescriptors(*map, *descriptors, *layout_descriptor); 575 InitializeVerifiedMapDescriptors(*map, *descriptors, *layout_descriptor);
576 576
577 // Now test LayoutDescriptor::cast_gc_safe(). 577 // Now test LayoutDescriptor::cast_gc_safe().
578 Handle<LayoutDescriptor> layout_descriptor_copy = 578 Handle<LayoutDescriptor> layout_descriptor_copy =
579 LayoutDescriptor::New(map, descriptors, kPropsCount); 579 LayoutDescriptor::New(map, descriptors, kPropsCount);
580 580
581 LayoutDescriptor* layout_desc = *layout_descriptor; 581 LayoutDescriptor* layout_desc = *layout_descriptor;
582 CHECK_EQ(layout_desc, LayoutDescriptor::cast(layout_desc)); 582 CHECK_EQ(layout_desc, LayoutDescriptor::cast(layout_desc));
583 CHECK_EQ(layout_desc, LayoutDescriptor::cast_gc_safe(layout_desc)); 583 CHECK_EQ(layout_desc, LayoutDescriptor::cast_gc_safe(layout_desc));
584 CHECK(layout_descriptor->IsJSTypedArray()); 584 CHECK(layout_descriptor->IsFixedTypedArrayBase());
585 // Now make it look like a forwarding pointer to layout_descriptor_copy. 585 // Now make it look like a forwarding pointer to layout_descriptor_copy.
586 MapWord map_word = layout_desc->map_word(); 586 MapWord map_word = layout_desc->map_word();
587 CHECK(!map_word.IsForwardingAddress()); 587 CHECK(!map_word.IsForwardingAddress());
588 layout_desc->set_map_word( 588 layout_desc->set_map_word(
589 MapWord::FromForwardingAddress(*layout_descriptor_copy)); 589 MapWord::FromForwardingAddress(*layout_descriptor_copy));
590 CHECK(layout_desc->map_word().IsForwardingAddress()); 590 CHECK(layout_desc->map_word().IsForwardingAddress());
591 CHECK_EQ(*layout_descriptor_copy, 591 CHECK_EQ(*layout_descriptor_copy,
592 LayoutDescriptor::cast_gc_safe(layout_desc)); 592 LayoutDescriptor::cast_gc_safe(layout_desc));
593 593
594 // Restore it back. 594 // Restore it back.
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
928 map = Map::CopyWithField(map, MakeName("prop", i), any_type, NONE, 928 map = Map::CopyWithField(map, MakeName("prop", i), any_type, NONE,
929 Representation::Smi(), 929 Representation::Smi(),
930 INSERT_TRANSITION).ToHandleChecked(); 930 INSERT_TRANSITION).ToHandleChecked();
931 } 931 }
932 map = Map::CopyWithField(map, MakeName("dbl", kSplitFieldIndex), any_type, 932 map = Map::CopyWithField(map, MakeName("dbl", kSplitFieldIndex), any_type,
933 NONE, Representation::Double(), 933 NONE, Representation::Double(),
934 INSERT_TRANSITION).ToHandleChecked(); 934 INSERT_TRANSITION).ToHandleChecked();
935 CHECK(map->layout_descriptor()->IsConsistentWithMap(*map, true)); 935 CHECK(map->layout_descriptor()->IsConsistentWithMap(*map, true));
936 CHECK(map->layout_descriptor()->IsSlowLayout()); 936 CHECK(map->layout_descriptor()->IsSlowLayout());
937 CHECK(map->owns_descriptors()); 937 CHECK(map->owns_descriptors());
938 CHECK_EQ(2, Smi::cast(map->layout_descriptor()->length())->value()); 938 CHECK_EQ(2, map->layout_descriptor()->length());
939 939
940 { 940 {
941 // Add transitions to double fields. 941 // Add transitions to double fields.
942 v8::HandleScope scope(CcTest::isolate()); 942 v8::HandleScope scope(CcTest::isolate());
943 943
944 Handle<Map> tmp_map = map; 944 Handle<Map> tmp_map = map;
945 for (int i = kSplitFieldIndex + 1; i < kFieldCount; i++) { 945 for (int i = kSplitFieldIndex + 1; i < kFieldCount; i++) {
946 tmp_map = Map::CopyWithField(tmp_map, MakeName("dbl", i), any_type, NONE, 946 tmp_map = Map::CopyWithField(tmp_map, MakeName("dbl", i), any_type, NONE,
947 Representation::Double(), 947 Representation::Double(),
948 INSERT_TRANSITION).ToHandleChecked(); 948 INSERT_TRANSITION).ToHandleChecked();
949 CHECK(tmp_map->layout_descriptor()->IsConsistentWithMap(*tmp_map, true)); 949 CHECK(tmp_map->layout_descriptor()->IsConsistentWithMap(*tmp_map, true));
950 } 950 }
951 // Check that descriptors are shared. 951 // Check that descriptors are shared.
952 CHECK(tmp_map->owns_descriptors()); 952 CHECK(tmp_map->owns_descriptors());
953 CHECK_EQ(map->instance_descriptors(), tmp_map->instance_descriptors()); 953 CHECK_EQ(map->instance_descriptors(), tmp_map->instance_descriptors());
954 CHECK_EQ(map->layout_descriptor(), tmp_map->layout_descriptor()); 954 CHECK_EQ(map->layout_descriptor(), tmp_map->layout_descriptor());
955 } 955 }
956 CHECK(map->layout_descriptor()->IsSlowLayout()); 956 CHECK(map->layout_descriptor()->IsSlowLayout());
957 CHECK_EQ(4, Smi::cast(map->layout_descriptor()->length())->value()); 957 CHECK_EQ(4, map->layout_descriptor()->length());
958 958
959 // The unused tail of the layout descriptor is now "durty" because of sharing. 959 // The unused tail of the layout descriptor is now "durty" because of sharing.
960 CHECK(map->layout_descriptor()->IsConsistentWithMap(*map)); 960 CHECK(map->layout_descriptor()->IsConsistentWithMap(*map));
961 for (int i = kSplitFieldIndex + 1; i < kTrimmedLayoutDescriptorLength; i++) { 961 for (int i = kSplitFieldIndex + 1; i < kTrimmedLayoutDescriptorLength; i++) {
962 CHECK(!map->layout_descriptor()->IsTagged(i)); 962 CHECK(!map->layout_descriptor()->IsTagged(i));
963 } 963 }
964 CHECK_LT(map->NumberOfOwnDescriptors(), 964 CHECK_LT(map->NumberOfOwnDescriptors(),
965 map->instance_descriptors()->number_of_descriptors()); 965 map->instance_descriptors()->number_of_descriptors());
966 966
967 // Call GC that should trim both |map|'s descriptor array and layout 967 // Call GC that should trim both |map|'s descriptor array and layout
968 // descriptor. 968 // descriptor.
969 CcTest::heap()->CollectAllGarbage(Heap::kNoGCFlags); 969 CcTest::heap()->CollectAllGarbage(Heap::kNoGCFlags);
970 970
971 // The unused tail of the layout descriptor is now "clean" again. 971 // The unused tail of the layout descriptor is now "clean" again.
972 CHECK(map->layout_descriptor()->IsConsistentWithMap(*map, true)); 972 CHECK(map->layout_descriptor()->IsConsistentWithMap(*map, true));
973 CHECK(map->owns_descriptors()); 973 CHECK(map->owns_descriptors());
974 CHECK_EQ(map->NumberOfOwnDescriptors(), 974 CHECK_EQ(map->NumberOfOwnDescriptors(),
975 map->instance_descriptors()->number_of_descriptors()); 975 map->instance_descriptors()->number_of_descriptors());
976 CHECK(map->layout_descriptor()->IsSlowLayout()); 976 CHECK(map->layout_descriptor()->IsSlowLayout());
977 CHECK_EQ(2, Smi::cast(map->layout_descriptor()->length())->value()); 977 CHECK_EQ(2, map->layout_descriptor()->length());
978 978
979 { 979 {
980 // Add transitions to tagged fields. 980 // Add transitions to tagged fields.
981 v8::HandleScope scope(CcTest::isolate()); 981 v8::HandleScope scope(CcTest::isolate());
982 982
983 Handle<Map> tmp_map = map; 983 Handle<Map> tmp_map = map;
984 for (int i = kSplitFieldIndex + 1; i < kFieldCount - 1; i++) { 984 for (int i = kSplitFieldIndex + 1; i < kFieldCount - 1; i++) {
985 tmp_map = Map::CopyWithField(tmp_map, MakeName("tagged", i), any_type, 985 tmp_map = Map::CopyWithField(tmp_map, MakeName("tagged", i), any_type,
986 NONE, Representation::Tagged(), 986 NONE, Representation::Tagged(),
987 INSERT_TRANSITION).ToHandleChecked(); 987 INSERT_TRANSITION).ToHandleChecked();
(...skipping 693 matching lines...) Expand 10 before | Expand all | Expand 10 after
1681 1681
1682 // TODO(ishell): add respective tests for property kind reconfiguring from 1682 // TODO(ishell): add respective tests for property kind reconfiguring from
1683 // accessor field to double, once accessor fields are supported by 1683 // accessor field to double, once accessor fields are supported by
1684 // Map::ReconfigureProperty(). 1684 // Map::ReconfigureProperty().
1685 1685
1686 1686
1687 // TODO(ishell): add respective tests for fast property removal case once 1687 // TODO(ishell): add respective tests for fast property removal case once
1688 // Map::ReconfigureProperty() supports that. 1688 // Map::ReconfigureProperty() supports that.
1689 1689
1690 #endif 1690 #endif
OLDNEW
« no previous file with comments | « src/objects-printer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698