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

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

Issue 1636013002: Replace HeapType with a non-templated FieldType class. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix tracing of generalizations Created 4 years, 11 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
« src/ic/ic.cc ('K') | « test/cctest/test-types.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 929 matching lines...) Expand 10 before | Expand all | Expand 10 after
940 940
941 TEST(DescriptorArrayTrimming) { 941 TEST(DescriptorArrayTrimming) {
942 CcTest::InitializeVM(); 942 CcTest::InitializeVM();
943 v8::HandleScope scope(CcTest::isolate()); 943 v8::HandleScope scope(CcTest::isolate());
944 Isolate* isolate = CcTest::i_isolate(); 944 Isolate* isolate = CcTest::i_isolate();
945 945
946 const int kFieldCount = 128; 946 const int kFieldCount = 128;
947 const int kSplitFieldIndex = 32; 947 const int kSplitFieldIndex = 32;
948 const int kTrimmedLayoutDescriptorLength = 64; 948 const int kTrimmedLayoutDescriptorLength = 64;
949 949
950 Handle<HeapType> any_type = HeapType::Any(isolate); 950 Handle<FieldType> any_type = FieldType::Any(isolate);
951 Handle<Map> map = Map::Create(isolate, kFieldCount); 951 Handle<Map> map = Map::Create(isolate, kFieldCount);
952 for (int i = 0; i < kSplitFieldIndex; i++) { 952 for (int i = 0; i < kSplitFieldIndex; i++) {
953 map = Map::CopyWithField(map, MakeName("prop", i), any_type, NONE, 953 map = Map::CopyWithField(map, MakeName("prop", i), any_type, NONE,
954 Representation::Smi(), 954 Representation::Smi(),
955 INSERT_TRANSITION).ToHandleChecked(); 955 INSERT_TRANSITION).ToHandleChecked();
956 } 956 }
957 map = Map::CopyWithField(map, MakeName("dbl", kSplitFieldIndex), any_type, 957 map = Map::CopyWithField(map, MakeName("dbl", kSplitFieldIndex), any_type,
958 NONE, Representation::Double(), 958 NONE, Representation::Double(),
959 INSERT_TRANSITION).ToHandleChecked(); 959 INSERT_TRANSITION).ToHandleChecked();
960 CHECK(map->layout_descriptor()->IsConsistentWithMap(*map, true)); 960 CHECK(map->layout_descriptor()->IsConsistentWithMap(*map, true));
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1028 CcTest::InitializeVM(); 1028 CcTest::InitializeVM();
1029 v8::HandleScope scope(CcTest::isolate()); 1029 v8::HandleScope scope(CcTest::isolate());
1030 Isolate* isolate = CcTest::i_isolate(); 1030 Isolate* isolate = CcTest::i_isolate();
1031 Factory* factory = isolate->factory(); 1031 Factory* factory = isolate->factory();
1032 1032
1033 // The plan: create |obj| with double field in new space, do scanvenge so 1033 // The plan: create |obj| with double field in new space, do scanvenge so
1034 // that |obj| is moved to old space, construct a double value that looks like 1034 // that |obj| is moved to old space, construct a double value that looks like
1035 // a pointer to "from space" pointer. Do scavenge one more time and ensure 1035 // a pointer to "from space" pointer. Do scavenge one more time and ensure
1036 // that it didn't crash or corrupt the double value stored in the object. 1036 // that it didn't crash or corrupt the double value stored in the object.
1037 1037
1038 Handle<HeapType> any_type = HeapType::Any(isolate); 1038 Handle<FieldType> any_type = FieldType::Any(isolate);
1039 Handle<Map> map = Map::Create(isolate, 10); 1039 Handle<Map> map = Map::Create(isolate, 10);
1040 map = Map::CopyWithField(map, MakeName("prop", 0), any_type, NONE, 1040 map = Map::CopyWithField(map, MakeName("prop", 0), any_type, NONE,
1041 Representation::Double(), 1041 Representation::Double(),
1042 INSERT_TRANSITION).ToHandleChecked(); 1042 INSERT_TRANSITION).ToHandleChecked();
1043 1043
1044 // Create object in new space. 1044 // Create object in new space.
1045 Handle<JSObject> obj = factory->NewJSObjectFromMap(map, NOT_TENURED); 1045 Handle<JSObject> obj = factory->NewJSObjectFromMap(map, NOT_TENURED);
1046 1046
1047 Handle<HeapNumber> heap_number = factory->NewHeapNumber(42.5); 1047 Handle<HeapNumber> heap_number = factory->NewHeapNumber(42.5);
1048 obj->WriteToField(0, *heap_number); 1048 obj->WriteToField(0, *heap_number);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1090 Factory* factory = isolate->factory(); 1090 Factory* factory = isolate->factory();
1091 Heap* heap = CcTest::heap(); 1091 Heap* heap = CcTest::heap();
1092 PagedSpace* old_space = heap->old_space(); 1092 PagedSpace* old_space = heap->old_space();
1093 1093
1094 // The plan: create |obj_value| in old space and ensure that it is allocated 1094 // The plan: create |obj_value| in old space and ensure that it is allocated
1095 // on evacuation candidate page, create |obj| with double and tagged fields 1095 // on evacuation candidate page, create |obj| with double and tagged fields
1096 // in new space and write |obj_value| to tagged field of |obj|, do two 1096 // in new space and write |obj_value| to tagged field of |obj|, do two
1097 // scavenges to promote |obj| to old space, a GC in old space and ensure that 1097 // scavenges to promote |obj| to old space, a GC in old space and ensure that
1098 // the tagged value was properly updated after candidates evacuation. 1098 // the tagged value was properly updated after candidates evacuation.
1099 1099
1100 Handle<HeapType> any_type = HeapType::Any(isolate); 1100 Handle<FieldType> any_type = FieldType::Any(isolate);
1101 Handle<Map> map = Map::Create(isolate, 10); 1101 Handle<Map> map = Map::Create(isolate, 10);
1102 map = Map::CopyWithField(map, MakeName("prop", 0), any_type, NONE, 1102 map = Map::CopyWithField(map, MakeName("prop", 0), any_type, NONE,
1103 Representation::Double(), 1103 Representation::Double(),
1104 INSERT_TRANSITION).ToHandleChecked(); 1104 INSERT_TRANSITION).ToHandleChecked();
1105 map = Map::CopyWithField(map, MakeName("prop", 1), any_type, NONE, 1105 map = Map::CopyWithField(map, MakeName("prop", 1), any_type, NONE,
1106 Representation::Tagged(), 1106 Representation::Tagged(),
1107 INSERT_TRANSITION).ToHandleChecked(); 1107 INSERT_TRANSITION).ToHandleChecked();
1108 1108
1109 // Create |obj_value| in old space. 1109 // Create |obj_value| in old space.
1110 Handle<HeapObject> obj_value; 1110 Handle<HeapObject> obj_value;
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
1314 kPropsCount); 1314 kPropsCount);
1315 1315
1316 TestLayoutDescriptorHelper(isolate, kPropsCount, descriptors, kPropsCount); 1316 TestLayoutDescriptorHelper(isolate, kPropsCount, descriptors, kPropsCount);
1317 } 1317 }
1318 1318
1319 1319
1320 TEST(LayoutDescriptorSharing) { 1320 TEST(LayoutDescriptorSharing) {
1321 CcTest::InitializeVM(); 1321 CcTest::InitializeVM();
1322 v8::HandleScope scope(CcTest::isolate()); 1322 v8::HandleScope scope(CcTest::isolate());
1323 Isolate* isolate = CcTest::i_isolate(); 1323 Isolate* isolate = CcTest::i_isolate();
1324 Handle<HeapType> any_type = HeapType::Any(isolate); 1324 Handle<FieldType> any_type = FieldType::Any(isolate);
1325 1325
1326 Handle<Map> split_map; 1326 Handle<Map> split_map;
1327 { 1327 {
1328 Handle<Map> map = Map::Create(isolate, 64); 1328 Handle<Map> map = Map::Create(isolate, 64);
1329 for (int i = 0; i < 32; i++) { 1329 for (int i = 0; i < 32; i++) {
1330 Handle<String> name = MakeName("prop", i); 1330 Handle<String> name = MakeName("prop", i);
1331 map = Map::CopyWithField(map, name, any_type, NONE, Representation::Smi(), 1331 map = Map::CopyWithField(map, name, any_type, NONE, Representation::Smi(),
1332 INSERT_TRANSITION).ToHandleChecked(); 1332 INSERT_TRANSITION).ToHandleChecked();
1333 } 1333 }
1334 split_map = Map::CopyWithField(map, MakeString("dbl"), any_type, NONE, 1334 split_map = Map::CopyWithField(map, MakeString("dbl"), any_type, NONE,
(...skipping 27 matching lines...) Expand all
1362 CHECK(map2->layout_descriptor()->IsConsistentWithMap(*map2, true)); 1362 CHECK(map2->layout_descriptor()->IsConsistentWithMap(*map2, true));
1363 } 1363 }
1364 1364
1365 1365
1366 TEST(StoreBufferScanOnScavenge) { 1366 TEST(StoreBufferScanOnScavenge) {
1367 CcTest::InitializeVM(); 1367 CcTest::InitializeVM();
1368 Isolate* isolate = CcTest::i_isolate(); 1368 Isolate* isolate = CcTest::i_isolate();
1369 Factory* factory = isolate->factory(); 1369 Factory* factory = isolate->factory();
1370 v8::HandleScope scope(CcTest::isolate()); 1370 v8::HandleScope scope(CcTest::isolate());
1371 1371
1372 Handle<HeapType> any_type = HeapType::Any(isolate); 1372 Handle<FieldType> any_type = FieldType::Any(isolate);
1373 Handle<Map> map = Map::Create(isolate, 10); 1373 Handle<Map> map = Map::Create(isolate, 10);
1374 map = Map::CopyWithField(map, MakeName("prop", 0), any_type, NONE, 1374 map = Map::CopyWithField(map, MakeName("prop", 0), any_type, NONE,
1375 Representation::Double(), 1375 Representation::Double(),
1376 INSERT_TRANSITION).ToHandleChecked(); 1376 INSERT_TRANSITION).ToHandleChecked();
1377 1377
1378 // Create object in new space. 1378 // Create object in new space.
1379 Handle<JSObject> obj = factory->NewJSObjectFromMap(map, NOT_TENURED); 1379 Handle<JSObject> obj = factory->NewJSObjectFromMap(map, NOT_TENURED);
1380 1380
1381 Handle<HeapNumber> heap_number = factory->NewHeapNumber(42.5); 1381 Handle<HeapNumber> heap_number = factory->NewHeapNumber(42.5);
1382 obj->WriteToField(0, *heap_number); 1382 obj->WriteToField(0, *heap_number);
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
1573 } 1573 }
1574 1574
1575 1575
1576 enum WriteBarrierKind { OLD_TO_OLD_WRITE_BARRIER, OLD_TO_NEW_WRITE_BARRIER }; 1576 enum WriteBarrierKind { OLD_TO_OLD_WRITE_BARRIER, OLD_TO_NEW_WRITE_BARRIER };
1577 static void TestWriteBarrierObjectShiftFieldsRight( 1577 static void TestWriteBarrierObjectShiftFieldsRight(
1578 WriteBarrierKind write_barrier_kind) { 1578 WriteBarrierKind write_barrier_kind) {
1579 CcTest::InitializeVM(); 1579 CcTest::InitializeVM();
1580 Isolate* isolate = CcTest::i_isolate(); 1580 Isolate* isolate = CcTest::i_isolate();
1581 v8::HandleScope scope(CcTest::isolate()); 1581 v8::HandleScope scope(CcTest::isolate());
1582 1582
1583 Handle<HeapType> any_type = HeapType::Any(isolate); 1583 Handle<FieldType> any_type = FieldType::Any(isolate);
1584 1584
1585 CompileRun("function func() { return 1; }"); 1585 CompileRun("function func() { return 1; }");
1586 1586
1587 Handle<JSObject> func = GetObject("func"); 1587 Handle<JSObject> func = GetObject("func");
1588 1588
1589 Handle<Map> map = Map::Create(isolate, 10); 1589 Handle<Map> map = Map::Create(isolate, 10);
1590 map = Map::CopyWithConstant(map, MakeName("prop", 0), func, NONE, 1590 map = Map::CopyWithConstant(map, MakeName("prop", 0), func, NONE,
1591 INSERT_TRANSITION).ToHandleChecked(); 1591 INSERT_TRANSITION).ToHandleChecked();
1592 map = Map::CopyWithField(map, MakeName("prop", 1), any_type, NONE, 1592 map = Map::CopyWithField(map, MakeName("prop", 1), any_type, NONE,
1593 Representation::Double(), 1593 Representation::Double(),
(...skipping 28 matching lines...) Expand all
1622 1622
1623 // TODO(ishell): add respective tests for property kind reconfiguring from 1623 // TODO(ishell): add respective tests for property kind reconfiguring from
1624 // accessor field to double, once accessor fields are supported by 1624 // accessor field to double, once accessor fields are supported by
1625 // Map::ReconfigureProperty(). 1625 // Map::ReconfigureProperty().
1626 1626
1627 1627
1628 // TODO(ishell): add respective tests for fast property removal case once 1628 // TODO(ishell): add respective tests for fast property removal case once
1629 // Map::ReconfigureProperty() supports that. 1629 // Map::ReconfigureProperty() supports that.
1630 1630
1631 #endif 1631 #endif
OLDNEW
« src/ic/ic.cc ('K') | « test/cctest/test-types.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698