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

Side by Side Diff: src/types.cc

Issue 1631583002: [for-in] Further refactorings and unification around for-in. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 10 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.h ('k') | test/mjsunit/for-in-opt.js » ('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 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 <iomanip> 5 #include <iomanip>
6 6
7 #include "src/types.h" 7 #include "src/types.h"
8 8
9 #include "src/ostreams.h" 9 #include "src/ostreams.h"
10 #include "src/types-inl.h" 10 #include "src/types-inl.h"
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 bitset |= SEMANTIC(type->AsUnion()->Get(i)->BitsetLub()); 167 bitset |= SEMANTIC(type->AsUnion()->Get(i)->BitsetLub());
168 } 168 }
169 return bitset; 169 return bitset;
170 } 170 }
171 if (type->IsClass()) return type->AsClass()->Lub(); 171 if (type->IsClass()) return type->AsClass()->Lub();
172 if (type->IsConstant()) return type->AsConstant()->Lub(); 172 if (type->IsConstant()) return type->AsConstant()->Lub();
173 if (type->IsRange()) return type->AsRange()->Lub(); 173 if (type->IsRange()) return type->AsRange()->Lub();
174 if (type->IsContext()) return kInternal & kTaggedPointer; 174 if (type->IsContext()) return kInternal & kTaggedPointer;
175 if (type->IsArray()) return kOtherObject; 175 if (type->IsArray()) return kOtherObject;
176 if (type->IsFunction()) return kFunction; 176 if (type->IsFunction()) return kFunction;
177 if (type->IsTuple()) return kInternal;
177 UNREACHABLE(); 178 UNREACHABLE();
178 return kNone; 179 return kNone;
179 } 180 }
180 181
181 182
182 template<class Config> 183 template<class Config>
183 typename TypeImpl<Config>::bitset 184 typename TypeImpl<Config>::bitset
184 TypeImpl<Config>::BitsetType::Lub(i::Map* map) { 185 TypeImpl<Config>::BitsetType::Lub(i::Map* map) {
185 DisallowHeapAllocation no_allocation; 186 DisallowHeapAllocation no_allocation;
186 switch (map->instance_type()) { 187 switch (map->instance_type()) {
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 if (this_fun->Arity() != that_fun->Arity() || 497 if (this_fun->Arity() != that_fun->Arity() ||
497 !this_fun->Result()->Equals(that_fun->Result()) || 498 !this_fun->Result()->Equals(that_fun->Result()) ||
498 !this_fun->Receiver()->Equals(that_fun->Receiver())) { 499 !this_fun->Receiver()->Equals(that_fun->Receiver())) {
499 return false; 500 return false;
500 } 501 }
501 for (int i = 0, n = this_fun->Arity(); i < n; ++i) { 502 for (int i = 0, n = this_fun->Arity(); i < n; ++i) {
502 if (!this_fun->Parameter(i)->Equals(that_fun->Parameter(i))) return false; 503 if (!this_fun->Parameter(i)->Equals(that_fun->Parameter(i))) return false;
503 } 504 }
504 return true; 505 return true;
505 } 506 }
507 if (this->IsTuple()) {
Jarin 2016/01/25 10:00:26 There should be a comment somewhere (probably on t
Benedikt Meurer 2016/01/25 10:05:05 As discussed offline, not saying anything about th
508 if (!that->IsTuple()) return false;
509 TupleType* this_tuple = this->AsTuple();
510 TupleType* that_tuple = that->AsTuple();
511 if (this_tuple->Arity() != that_tuple->Arity()) {
512 return false;
513 }
514 for (int i = 0, n = this_tuple->Arity(); i < n; ++i) {
515 if (!this_tuple->Element(i)->Equals(that_tuple->Element(i))) return false;
516 }
517 return true;
518 }
506 UNREACHABLE(); 519 UNREACHABLE();
507 return false; 520 return false;
508 } 521 }
509 522
510 523
511 template <class Config> 524 template <class Config>
512 typename TypeImpl<Config>::bitset TypeImpl<Config>::Representation() { 525 typename TypeImpl<Config>::bitset TypeImpl<Config>::Representation() {
513 return REPRESENTATION(this->BitsetLub()); 526 return REPRESENTATION(this->BitsetLub());
514 } 527 }
515 528
(...skipping 715 matching lines...) Expand 10 before | Expand all | Expand 10 after
1231 TypeHandle res = Convert<OtherType>(type->AsFunction()->Result(), region); 1244 TypeHandle res = Convert<OtherType>(type->AsFunction()->Result(), region);
1232 TypeHandle rcv = Convert<OtherType>(type->AsFunction()->Receiver(), region); 1245 TypeHandle rcv = Convert<OtherType>(type->AsFunction()->Receiver(), region);
1233 FunctionHandle function = FunctionType::New( 1246 FunctionHandle function = FunctionType::New(
1234 res, rcv, type->AsFunction()->Arity(), region); 1247 res, rcv, type->AsFunction()->Arity(), region);
1235 for (int i = 0; i < function->Arity(); ++i) { 1248 for (int i = 0; i < function->Arity(); ++i) {
1236 TypeHandle param = Convert<OtherType>( 1249 TypeHandle param = Convert<OtherType>(
1237 type->AsFunction()->Parameter(i), region); 1250 type->AsFunction()->Parameter(i), region);
1238 function->InitParameter(i, param); 1251 function->InitParameter(i, param);
1239 } 1252 }
1240 return function; 1253 return function;
1254 } else if (type->IsTuple()) {
1255 TupleHandle tuple = TupleType::New(type->AsTuple()->Arity(), region);
1256 for (int i = 0; i < tuple->Arity(); ++i) {
1257 tuple->InitElement(
1258 i, Convert<OtherType>(type->AsTuple()->Element(i), region));
1259 }
1260 return tuple;
1241 } else { 1261 } else {
1242 UNREACHABLE(); 1262 UNREACHABLE();
1243 return None(region); 1263 return None(region);
1244 } 1264 }
1245 } 1265 }
1246 1266
1247 1267
1248 // ----------------------------------------------------------------------------- 1268 // -----------------------------------------------------------------------------
1249 // Printing. 1269 // Printing.
1250 1270
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
1348 this->AsFunction()->Receiver()->PrintTo(os, dim); 1368 this->AsFunction()->Receiver()->PrintTo(os, dim);
1349 os << "."; 1369 os << ".";
1350 } 1370 }
1351 os << "("; 1371 os << "(";
1352 for (int i = 0; i < this->AsFunction()->Arity(); ++i) { 1372 for (int i = 0; i < this->AsFunction()->Arity(); ++i) {
1353 if (i > 0) os << ", "; 1373 if (i > 0) os << ", ";
1354 this->AsFunction()->Parameter(i)->PrintTo(os, dim); 1374 this->AsFunction()->Parameter(i)->PrintTo(os, dim);
1355 } 1375 }
1356 os << ")->"; 1376 os << ")->";
1357 this->AsFunction()->Result()->PrintTo(os, dim); 1377 this->AsFunction()->Result()->PrintTo(os, dim);
1378 } else if (this->IsTuple()) {
1379 os << "<";
1380 for (int i = 0, n = this->AsTuple()->Arity(); i < n; ++i) {
1381 TypeHandle type_i = this->AsTuple()->Element(i);
1382 if (i > 0) os << ", ";
1383 type_i->PrintTo(os, dim);
1384 }
1385 os << ">";
1358 } else { 1386 } else {
1359 UNREACHABLE(); 1387 UNREACHABLE();
1360 } 1388 }
1361 } 1389 }
1362 if (dim == BOTH_DIMS) os << "/"; 1390 if (dim == BOTH_DIMS) os << "/";
1363 if (dim != SEMANTIC_DIM) { 1391 if (dim != SEMANTIC_DIM) {
1364 BitsetType::Print(os, REPRESENTATION(this->BitsetLub())); 1392 BitsetType::Print(os, REPRESENTATION(this->BitsetLub()));
1365 } 1393 }
1366 } 1394 }
1367 1395
(...skipping 27 matching lines...) Expand all
1395 1423
1396 template TypeImpl<ZoneTypeConfig>::TypeHandle 1424 template TypeImpl<ZoneTypeConfig>::TypeHandle
1397 TypeImpl<ZoneTypeConfig>::Convert<HeapType>( 1425 TypeImpl<ZoneTypeConfig>::Convert<HeapType>(
1398 TypeImpl<HeapTypeConfig>::TypeHandle, TypeImpl<ZoneTypeConfig>::Region*); 1426 TypeImpl<HeapTypeConfig>::TypeHandle, TypeImpl<ZoneTypeConfig>::Region*);
1399 template TypeImpl<HeapTypeConfig>::TypeHandle 1427 template TypeImpl<HeapTypeConfig>::TypeHandle
1400 TypeImpl<HeapTypeConfig>::Convert<Type>( 1428 TypeImpl<HeapTypeConfig>::Convert<Type>(
1401 TypeImpl<ZoneTypeConfig>::TypeHandle, TypeImpl<HeapTypeConfig>::Region*); 1429 TypeImpl<ZoneTypeConfig>::TypeHandle, TypeImpl<HeapTypeConfig>::Region*);
1402 1430
1403 } // namespace internal 1431 } // namespace internal
1404 } // namespace v8 1432 } // namespace v8
OLDNEW
« no previous file with comments | « src/types.h ('k') | test/mjsunit/for-in-opt.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698