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

Side by Side Diff: test/cctest/test-types.cc

Issue 1205473004: [turbofan] Make global variable loads and stores explicit. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 5 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/types.cc ('k') | test/unittests/compiler/js-type-feedback-unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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 <vector> 5 #include <vector>
6 6
7 #include "src/hydrogen-types.h" 7 #include "src/hydrogen-types.h"
8 #include "src/types.h" 8 #include "src/types.h"
9 #include "test/cctest/cctest.h" 9 #include "test/cctest/cctest.h"
10 #include "test/cctest/types-fuzz.h" 10 #include "test/cctest/types-fuzz.h"
(...skipping 1002 matching lines...) Expand 10 before | Expand all | Expand 10 after
1013 CheckSub(T.Symbol, T.UniqueName); 1013 CheckSub(T.Symbol, T.UniqueName);
1014 CheckSub(T.Symbol, T.Name); 1014 CheckSub(T.Symbol, T.Name);
1015 CheckUnordered(T.String, T.UniqueName); 1015 CheckUnordered(T.String, T.UniqueName);
1016 CheckUnordered(T.String, T.Symbol); 1016 CheckUnordered(T.String, T.Symbol);
1017 CheckUnordered(T.InternalizedString, T.Symbol); 1017 CheckUnordered(T.InternalizedString, T.Symbol);
1018 1018
1019 CheckSub(T.Object, T.Receiver); 1019 CheckSub(T.Object, T.Receiver);
1020 CheckSub(T.Proxy, T.Receiver); 1020 CheckSub(T.Proxy, T.Receiver);
1021 CheckSub(T.OtherObject, T.Object); 1021 CheckSub(T.OtherObject, T.Object);
1022 CheckSub(T.Undetectable, T.Object); 1022 CheckSub(T.Undetectable, T.Object);
1023 CheckSub(T.DetectableObject, T.Object); 1023 CheckSub(T.OtherObject, T.Object);
1024 CheckSub(T.GlobalObject, T.DetectableObject);
1025 CheckSub(T.OtherObject, T.DetectableObject);
1026 CheckSub(T.GlobalObject, T.Object);
1027 CheckSub(T.GlobalObject, T.Receiver);
1028 1024
1029 CheckUnordered(T.Object, T.Proxy); 1025 CheckUnordered(T.Object, T.Proxy);
1030 CheckUnordered(T.GlobalObject, T.OtherObject); 1026 CheckUnordered(T.OtherObject, T.Undetectable);
1031 CheckUnordered(T.DetectableObject, T.Undetectable);
1032 1027
1033 // Subtyping between concrete structural types 1028 // Subtyping between concrete structural types
1034 1029
1035 CheckSub(T.ObjectClass, T.Object); 1030 CheckSub(T.ObjectClass, T.Object);
1036 CheckSub(T.ArrayClass, T.OtherObject); 1031 CheckSub(T.ArrayClass, T.OtherObject);
1037 CheckSub(T.UninitializedClass, T.Internal); 1032 CheckSub(T.UninitializedClass, T.Internal);
1038 CheckUnordered(T.ObjectClass, T.ArrayClass); 1033 CheckUnordered(T.ObjectClass, T.ArrayClass);
1039 CheckUnordered(T.UninitializedClass, T.Null); 1034 CheckUnordered(T.UninitializedClass, T.Null);
1040 CheckUnordered(T.UninitializedClass, T.Undefined); 1035 CheckUnordered(T.UninitializedClass, T.Undefined);
1041 1036
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
1343 CheckOverlap(T.InternalizedString, T.String); 1338 CheckOverlap(T.InternalizedString, T.String);
1344 CheckOverlap(T.InternalizedString, T.UniqueName); 1339 CheckOverlap(T.InternalizedString, T.UniqueName);
1345 CheckOverlap(T.InternalizedString, T.Name); 1340 CheckOverlap(T.InternalizedString, T.Name);
1346 CheckOverlap(T.Symbol, T.UniqueName); 1341 CheckOverlap(T.Symbol, T.UniqueName);
1347 CheckOverlap(T.Symbol, T.Name); 1342 CheckOverlap(T.Symbol, T.Name);
1348 CheckOverlap(T.String, T.UniqueName); 1343 CheckOverlap(T.String, T.UniqueName);
1349 CheckDisjoint(T.String, T.Symbol); 1344 CheckDisjoint(T.String, T.Symbol);
1350 CheckDisjoint(T.InternalizedString, T.Symbol); 1345 CheckDisjoint(T.InternalizedString, T.Symbol);
1351 CheckOverlap(T.Object, T.Receiver); 1346 CheckOverlap(T.Object, T.Receiver);
1352 CheckOverlap(T.OtherObject, T.Object); 1347 CheckOverlap(T.OtherObject, T.Object);
1353 CheckOverlap(T.GlobalObject, T.Object);
1354 CheckOverlap(T.Proxy, T.Receiver); 1348 CheckOverlap(T.Proxy, T.Receiver);
1355 CheckDisjoint(T.Object, T.Proxy); 1349 CheckDisjoint(T.Object, T.Proxy);
1356 1350
1357 // Structural types 1351 // Structural types
1358 CheckOverlap(T.ObjectClass, T.Object); 1352 CheckOverlap(T.ObjectClass, T.Object);
1359 CheckOverlap(T.ArrayClass, T.Object); 1353 CheckOverlap(T.ArrayClass, T.Object);
1360 CheckOverlap(T.ObjectClass, T.ObjectClass); 1354 CheckOverlap(T.ObjectClass, T.ObjectClass);
1361 CheckOverlap(T.ArrayClass, T.ArrayClass); 1355 CheckOverlap(T.ArrayClass, T.ArrayClass);
1362 CheckDisjoint(T.ObjectClass, T.ArrayClass); 1356 CheckDisjoint(T.ObjectClass, T.ArrayClass);
1363 CheckOverlap(T.SmiConstant, T.SignedSmall); 1357 CheckOverlap(T.SmiConstant, T.SignedSmall);
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after
1956 for (TypeIterator it1 = T.types.begin(); it1 != T.types.end(); ++it1) { 1950 for (TypeIterator it1 = T.types.begin(); it1 != T.types.end(); ++it1) {
1957 for (TypeIterator it2 = T.types.begin(); it2 != T.types.end(); ++it2) { 1951 for (TypeIterator it2 = T.types.begin(); it2 != T.types.end(); ++it2) {
1958 TypeHandle type1 = *it1; 1952 TypeHandle type1 = *it1;
1959 TypeHandle type2 = *it2; 1953 TypeHandle type2 = *it2;
1960 HType htype1 = HType::FromType<Type>(type1); 1954 HType htype1 = HType::FromType<Type>(type1);
1961 HType htype2 = HType::FromType<Type>(type2); 1955 HType htype2 = HType::FromType<Type>(type2);
1962 CHECK(!type1->Is(type2) || htype1.IsSubtypeOf(htype2)); 1956 CHECK(!type1->Is(type2) || htype1.IsSubtypeOf(htype2));
1963 } 1957 }
1964 } 1958 }
1965 } 1959 }
1966
1967 void GlobalObjectType() {
1968 i::Handle<i::Context> context1 = v8::Utils::OpenHandle(
1969 *v8::Context::New(reinterpret_cast<v8::Isolate*>(isolate)));
1970 Handle<i::GlobalObject> global_object1(context1->global_object());
1971 TypeHandle GlobalObjectConstant1 =
1972 Type::Constant(global_object1, Rep::ToRegion(&zone, isolate));
1973
1974 i::Handle<i::Context> context2 = v8::Utils::OpenHandle(
1975 *v8::Context::New(reinterpret_cast<v8::Isolate*>(isolate)));
1976 Handle<i::GlobalObject> global_object2(context2->global_object());
1977 TypeHandle GlobalObjectConstant2 =
1978 Type::Constant(global_object2, Rep::ToRegion(&zone, isolate));
1979
1980 CheckSub(GlobalObjectConstant1, T.DetectableObject);
1981 CheckSub(GlobalObjectConstant2, T.DetectableObject);
1982 CheckSub(GlobalObjectConstant1, T.GlobalObject);
1983 CheckSub(GlobalObjectConstant2, T.GlobalObject);
1984 CheckSub(GlobalObjectConstant1, T.Object);
1985 CheckSub(GlobalObjectConstant2, T.Object);
1986
1987 CheckUnordered(T.GlobalObject, T.OtherObject);
1988 CheckUnordered(GlobalObjectConstant1, T.OtherObject);
1989 CheckUnordered(GlobalObjectConstant2, T.OtherObject);
1990 CheckUnordered(GlobalObjectConstant1, GlobalObjectConstant2);
1991
1992 CheckDisjoint(T.GlobalObject, T.ObjectClass);
1993 CheckDisjoint(GlobalObjectConstant1, T.ObjectClass);
1994 CheckDisjoint(GlobalObjectConstant2, T.ArrayClass);
1995
1996 CheckUnordered(T.Union(T.ObjectClass, T.ArrayClass), T.GlobalObject);
1997 CheckUnordered(T.Union(T.ObjectClass, T.ArrayClass), GlobalObjectConstant1);
1998 CheckUnordered(T.Union(T.ObjectClass, T.ArrayClass), GlobalObjectConstant2);
1999
2000 CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayClass), T.GlobalObject);
2001 CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayClass),
2002 GlobalObjectConstant1);
2003 CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayClass),
2004 GlobalObjectConstant2);
2005
2006 CheckUnordered(T.Union(T.ObjectClass, T.String), T.GlobalObject);
2007
2008 CheckSub(T.Union(T.ObjectConstant1, T.ArrayClass),
2009 T.Union(T.GlobalObject, T.Object));
2010
2011 CheckDisjoint(T.Union(GlobalObjectConstant1, T.ArrayClass),
2012 GlobalObjectConstant2);
2013
2014 CheckEqual(T.Union(T.Union(T.Number, GlobalObjectConstant1),
2015 T.Union(T.SignedSmall, T.GlobalObject)),
2016 T.Union(T.Number, T.GlobalObject));
2017
2018 CheckEqual(T.Semantic(T.Intersect(T.ObjectClass, T.GlobalObject)), T.None);
2019
2020 CHECK(!T.Intersect(T.ArrayClass, GlobalObjectConstant2)->IsInhabited());
2021
2022 CheckEqual(T.Intersect(T.Union(T.Number, T.OtherObject),
2023 T.Union(T.Signed32, T.GlobalObject)),
2024 T.Signed32);
2025 }
2026 }; 1960 };
2027 1961
2028 typedef Tests<Type, Type*, Zone, ZoneRep> ZoneTests; 1962 typedef Tests<Type, Type*, Zone, ZoneRep> ZoneTests;
2029 typedef Tests<HeapType, Handle<HeapType>, Isolate, HeapRep> HeapTests; 1963 typedef Tests<HeapType, Handle<HeapType>, Isolate, HeapRep> HeapTests;
2030 1964
2031 1965
2032 TEST(IsSomeType_zone) { ZoneTests().IsSomeType(); } 1966 TEST(IsSomeType_zone) { ZoneTests().IsSomeType(); }
2033 1967
2034 1968
2035 TEST(IsSomeType_heap) { HeapTests().IsSomeType(); } 1969 TEST(IsSomeType_heap) { HeapTests().IsSomeType(); }
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
2190 } 2124 }
2191 2125
2192 2126
2193 TEST(Convert_heap) { HeapTests().Convert<Type, Type*, Zone, ZoneRep>(); } 2127 TEST(Convert_heap) { HeapTests().Convert<Type, Type*, Zone, ZoneRep>(); }
2194 2128
2195 2129
2196 TEST(HTypeFromType_zone) { ZoneTests().HTypeFromType(); } 2130 TEST(HTypeFromType_zone) { ZoneTests().HTypeFromType(); }
2197 2131
2198 2132
2199 TEST(HTypeFromType_heap) { HeapTests().HTypeFromType(); } 2133 TEST(HTypeFromType_heap) { HeapTests().HTypeFromType(); }
2200
2201
2202 TEST(GlobalObjectType_zone) { ZoneTests().GlobalObjectType(); }
2203
2204
2205 TEST(GlobalObjectType_heap) { HeapTests().GlobalObjectType(); }
OLDNEW
« no previous file with comments | « src/types.cc ('k') | test/unittests/compiler/js-type-feedback-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698