| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 CHECK(!type1->Is(type2)); | 236 CHECK(!type1->Is(type2)); |
| 237 CHECK(!type2->Is(type1)); | 237 CHECK(!type2->Is(type1)); |
| 238 CHECK(!type1->Maybe(type2)); | 238 CHECK(!type1->Maybe(type2)); |
| 239 CHECK(!type2->Maybe(type1)); | 239 CHECK(!type2->Maybe(type1)); |
| 240 if (Rep::IsBitset(type1) && Rep::IsBitset(type2)) { | 240 if (Rep::IsBitset(type1) && Rep::IsBitset(type2)) { |
| 241 CHECK_EQ(0, Rep::AsBitset(type1) & Rep::AsBitset(type2)); | 241 CHECK_EQ(0, Rep::AsBitset(type1) & Rep::AsBitset(type2)); |
| 242 } | 242 } |
| 243 } | 243 } |
| 244 | 244 |
| 245 void Bitset() { | 245 void Bitset() { |
| 246 CHECK(IsBitset(T.None)); | 246 CHECK(this->IsBitset(T.None)); |
| 247 CHECK(IsBitset(T.Any)); | 247 CHECK(this->IsBitset(T.Any)); |
| 248 CHECK(IsBitset(T.String)); | 248 CHECK(this->IsBitset(T.String)); |
| 249 CHECK(IsBitset(T.Object)); | 249 CHECK(this->IsBitset(T.Object)); |
| 250 | 250 |
| 251 CHECK(IsBitset(T.Union(T.String, T.Number))); | 251 CHECK(this->IsBitset(T.Union(T.String, T.Number))); |
| 252 CHECK(IsBitset(T.Union(T.String, T.Receiver))); | 252 CHECK(this->IsBitset(T.Union(T.String, T.Receiver))); |
| 253 | 253 |
| 254 CHECK_EQ(0, AsBitset(T.None)); | 254 CHECK_EQ(0, this->AsBitset(T.None)); |
| 255 CHECK_EQ(AsBitset(T.Number) | AsBitset(T.String), | 255 CHECK_EQ(this->AsBitset(T.Number) | this->AsBitset(T.String), |
| 256 AsBitset(T.Union(T.String, T.Number))); | 256 this->AsBitset(T.Union(T.String, T.Number))); |
| 257 CHECK_EQ(AsBitset(T.Receiver), | 257 CHECK_EQ(this->AsBitset(T.Receiver), |
| 258 AsBitset(T.Union(T.Receiver, T.Object))); | 258 this->AsBitset(T.Union(T.Receiver, T.Object))); |
| 259 } | 259 } |
| 260 | 260 |
| 261 void Class() { | 261 void Class() { |
| 262 CHECK(IsClass(T.ObjectClass)); | 262 CHECK(this->IsClass(T.ObjectClass)); |
| 263 CHECK(IsClass(T.ArrayClass)); | 263 CHECK(this->IsClass(T.ArrayClass)); |
| 264 | 264 |
| 265 CHECK(*T.object_map == AsClass(T.ObjectClass)); | 265 CHECK(*T.object_map == this->AsClass(T.ObjectClass)); |
| 266 CHECK(*T.array_map == AsClass(T.ArrayClass)); | 266 CHECK(*T.array_map == this->AsClass(T.ArrayClass)); |
| 267 } | 267 } |
| 268 | 268 |
| 269 void Constant() { | 269 void Constant() { |
| 270 CHECK(IsConstant(T.SmiConstant)); | 270 CHECK(this->IsConstant(T.SmiConstant)); |
| 271 CHECK(IsConstant(T.ObjectConstant1)); | 271 CHECK(this->IsConstant(T.ObjectConstant1)); |
| 272 CHECK(IsConstant(T.ObjectConstant2)); | 272 CHECK(this->IsConstant(T.ObjectConstant2)); |
| 273 CHECK(IsConstant(T.ArrayConstant1)); | 273 CHECK(this->IsConstant(T.ArrayConstant1)); |
| 274 CHECK(IsConstant(T.ArrayConstant2)); | 274 CHECK(this->IsConstant(T.ArrayConstant2)); |
| 275 | 275 |
| 276 CHECK(*T.smi == AsConstant(T.SmiConstant)); | 276 CHECK(*T.smi == this->AsConstant(T.SmiConstant)); |
| 277 CHECK(*T.object1 == AsConstant(T.ObjectConstant1)); | 277 CHECK(*T.object1 == this->AsConstant(T.ObjectConstant1)); |
| 278 CHECK(*T.object2 == AsConstant(T.ObjectConstant2)); | 278 CHECK(*T.object2 == this->AsConstant(T.ObjectConstant2)); |
| 279 CHECK(*T.object1 != AsConstant(T.ObjectConstant2)); | 279 CHECK(*T.object1 != this->AsConstant(T.ObjectConstant2)); |
| 280 CHECK(*T.array == AsConstant(T.ArrayConstant1)); | 280 CHECK(*T.array == this->AsConstant(T.ArrayConstant1)); |
| 281 CHECK(*T.array == AsConstant(T.ArrayConstant2)); | 281 CHECK(*T.array == this->AsConstant(T.ArrayConstant2)); |
| 282 } | 282 } |
| 283 | 283 |
| 284 void Is() { | 284 void Is() { |
| 285 // Reflexivity | 285 // Reflexivity |
| 286 CHECK(T.None->Is(T.None)); | 286 CHECK(T.None->Is(T.None)); |
| 287 CHECK(T.Any->Is(T.Any)); | 287 CHECK(T.Any->Is(T.Any)); |
| 288 CHECK(T.Object->Is(T.Object)); | 288 CHECK(T.Object->Is(T.Object)); |
| 289 | 289 |
| 290 CHECK(T.ObjectClass->Is(T.ObjectClass)); | 290 CHECK(T.ObjectClass->Is(T.ObjectClass)); |
| 291 CHECK(T.ObjectConstant1->Is(T.ObjectConstant1)); | 291 CHECK(T.ObjectConstant1->Is(T.ObjectConstant1)); |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 423 | 423 |
| 424 CheckDisjoint(T.ObjectConstant1, T.ObjectClass); | 424 CheckDisjoint(T.ObjectConstant1, T.ObjectClass); |
| 425 CheckDisjoint(T.ObjectConstant2, T.ObjectClass); | 425 CheckDisjoint(T.ObjectConstant2, T.ObjectClass); |
| 426 CheckDisjoint(T.ObjectConstant1, T.ArrayClass); | 426 CheckDisjoint(T.ObjectConstant1, T.ArrayClass); |
| 427 CheckDisjoint(T.ObjectConstant2, T.ArrayClass); | 427 CheckDisjoint(T.ObjectConstant2, T.ArrayClass); |
| 428 CheckDisjoint(T.ArrayConstant1, T.ObjectClass); | 428 CheckDisjoint(T.ArrayConstant1, T.ObjectClass); |
| 429 } | 429 } |
| 430 | 430 |
| 431 void Union() { | 431 void Union() { |
| 432 // Bitset-bitset | 432 // Bitset-bitset |
| 433 CHECK(IsBitset(T.Union(T.Object, T.Number))); | 433 CHECK(this->IsBitset(T.Union(T.Object, T.Number))); |
| 434 CHECK(IsBitset(T.Union(T.Object, T.Object))); | 434 CHECK(this->IsBitset(T.Union(T.Object, T.Object))); |
| 435 CHECK(IsBitset(T.Union(T.Any, T.None))); | 435 CHECK(this->IsBitset(T.Union(T.Any, T.None))); |
| 436 | 436 |
| 437 CheckEqual(T.Union(T.None, T.Number), T.Number); | 437 CheckEqual(T.Union(T.None, T.Number), T.Number); |
| 438 CheckEqual(T.Union(T.Object, T.Proxy), T.Receiver); | 438 CheckEqual(T.Union(T.Object, T.Proxy), T.Receiver); |
| 439 CheckEqual(T.Union(T.Number, T.String), T.Union(T.String, T.Number)); | 439 CheckEqual(T.Union(T.Number, T.String), T.Union(T.String, T.Number)); |
| 440 CheckSub(T.Union(T.Number, T.String), T.Any); | 440 CheckSub(T.Union(T.Number, T.String), T.Any); |
| 441 | 441 |
| 442 // Class-class | 442 // Class-class |
| 443 CHECK(IsClass(T.Union(T.ObjectClass, T.ObjectClass))); | 443 CHECK(this->IsClass(T.Union(T.ObjectClass, T.ObjectClass))); |
| 444 CHECK(IsUnion(T.Union(T.ObjectClass, T.ArrayClass))); | 444 CHECK(this->IsUnion(T.Union(T.ObjectClass, T.ArrayClass))); |
| 445 | 445 |
| 446 CheckEqual(T.Union(T.ObjectClass, T.ObjectClass), T.ObjectClass); | 446 CheckEqual(T.Union(T.ObjectClass, T.ObjectClass), T.ObjectClass); |
| 447 CheckSub(T.None, T.Union(T.ObjectClass, T.ArrayClass)); | 447 CheckSub(T.None, T.Union(T.ObjectClass, T.ArrayClass)); |
| 448 CheckSub(T.Union(T.ObjectClass, T.ArrayClass), T.Any); | 448 CheckSub(T.Union(T.ObjectClass, T.ArrayClass), T.Any); |
| 449 CheckSub(T.ObjectClass, T.Union(T.ObjectClass, T.ArrayClass)); | 449 CheckSub(T.ObjectClass, T.Union(T.ObjectClass, T.ArrayClass)); |
| 450 CheckSub(T.ArrayClass, T.Union(T.ObjectClass, T.ArrayClass)); | 450 CheckSub(T.ArrayClass, T.Union(T.ObjectClass, T.ArrayClass)); |
| 451 CheckSub(T.Union(T.ObjectClass, T.ArrayClass), T.Object); | 451 CheckSub(T.Union(T.ObjectClass, T.ArrayClass), T.Object); |
| 452 CheckUnordered(T.Union(T.ObjectClass, T.ArrayClass), T.Array); | 452 CheckUnordered(T.Union(T.ObjectClass, T.ArrayClass), T.Array); |
| 453 CheckOverlap(T.Union(T.ObjectClass, T.ArrayClass), T.Array); | 453 CheckOverlap(T.Union(T.ObjectClass, T.ArrayClass), T.Array); |
| 454 CheckDisjoint(T.Union(T.ObjectClass, T.ArrayClass), T.Number); | 454 CheckDisjoint(T.Union(T.ObjectClass, T.ArrayClass), T.Number); |
| 455 | 455 |
| 456 // Constant-constant | 456 // Constant-constant |
| 457 CHECK(IsConstant(T.Union(T.ObjectConstant1, T.ObjectConstant1))); | 457 CHECK(this->IsConstant(T.Union(T.ObjectConstant1, T.ObjectConstant1))); |
| 458 CHECK(IsConstant(T.Union(T.ArrayConstant1, T.ArrayConstant1))); | 458 CHECK(this->IsConstant(T.Union(T.ArrayConstant1, T.ArrayConstant1))); |
| 459 CHECK(IsUnion(T.Union(T.ObjectConstant1, T.ObjectConstant2))); | 459 CHECK(this->IsUnion(T.Union(T.ObjectConstant1, T.ObjectConstant2))); |
| 460 | 460 |
| 461 CheckEqual( | 461 CheckEqual( |
| 462 T.Union(T.ObjectConstant1, T.ObjectConstant1), | 462 T.Union(T.ObjectConstant1, T.ObjectConstant1), |
| 463 T.ObjectConstant1); | 463 T.ObjectConstant1); |
| 464 CheckEqual(T.Union(T.ArrayConstant1, T.ArrayConstant1), T.ArrayConstant1); | 464 CheckEqual(T.Union(T.ArrayConstant1, T.ArrayConstant1), T.ArrayConstant1); |
| 465 CheckEqual(T.Union(T.ArrayConstant1, T.ArrayConstant1), T.ArrayConstant2); | 465 CheckEqual(T.Union(T.ArrayConstant1, T.ArrayConstant1), T.ArrayConstant2); |
| 466 CheckSub(T.None, T.Union(T.ObjectConstant1, T.ObjectConstant2)); | 466 CheckSub(T.None, T.Union(T.ObjectConstant1, T.ObjectConstant2)); |
| 467 CheckSub(T.Union(T.ObjectConstant1, T.ObjectConstant2), T.Any); | 467 CheckSub(T.Union(T.ObjectConstant1, T.ObjectConstant2), T.Any); |
| 468 CheckSub(T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2)); | 468 CheckSub(T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2)); |
| 469 CheckSub(T.ObjectConstant2, T.Union(T.ObjectConstant1, T.ObjectConstant2)); | 469 CheckSub(T.ObjectConstant2, T.Union(T.ObjectConstant1, T.ObjectConstant2)); |
| 470 CheckSub(T.ArrayConstant2, T.Union(T.ArrayConstant1, T.ObjectConstant2)); | 470 CheckSub(T.ArrayConstant2, T.Union(T.ArrayConstant1, T.ObjectConstant2)); |
| 471 CheckSub(T.Union(T.ObjectConstant1, T.ObjectConstant2), T.Object); | 471 CheckSub(T.Union(T.ObjectConstant1, T.ObjectConstant2), T.Object); |
| 472 CheckUnordered( | 472 CheckUnordered( |
| 473 T.Union(T.ObjectConstant1, T.ObjectConstant2), T.ObjectClass); | 473 T.Union(T.ObjectConstant1, T.ObjectConstant2), T.ObjectClass); |
| 474 CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.Array); | 474 CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.Array); |
| 475 CheckOverlap(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.Array); | 475 CheckOverlap(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.Array); |
| 476 CheckOverlap( | 476 CheckOverlap( |
| 477 T.Union(T.ObjectConstant1, T.ArrayConstant1), T.ArrayConstant2); | 477 T.Union(T.ObjectConstant1, T.ArrayConstant1), T.ArrayConstant2); |
| 478 CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.Number); | 478 CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.Number); |
| 479 CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.ObjectClass); | 479 CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.ObjectClass); |
| 480 | 480 |
| 481 // Bitset-class | 481 // Bitset-class |
| 482 CHECK(IsBitset(T.Union(T.ObjectClass, T.Object))); | 482 CHECK(this->IsBitset(T.Union(T.ObjectClass, T.Object))); |
| 483 CHECK(IsUnion(T.Union(T.ObjectClass, T.Number))); | 483 CHECK(this->IsUnion(T.Union(T.ObjectClass, T.Number))); |
| 484 | 484 |
| 485 CheckEqual(T.Union(T.ObjectClass, T.Object), T.Object); | 485 CheckEqual(T.Union(T.ObjectClass, T.Object), T.Object); |
| 486 CheckSub(T.None, T.Union(T.ObjectClass, T.Number)); | 486 CheckSub(T.None, T.Union(T.ObjectClass, T.Number)); |
| 487 CheckSub(T.Union(T.ObjectClass, T.Number), T.Any); | 487 CheckSub(T.Union(T.ObjectClass, T.Number), T.Any); |
| 488 CheckSub(T.Union(T.ObjectClass, T.Smi), T.Union(T.Object, T.Number)); | 488 CheckSub(T.Union(T.ObjectClass, T.Smi), T.Union(T.Object, T.Number)); |
| 489 CheckSub(T.Union(T.ObjectClass, T.Array), T.Object); | 489 CheckSub(T.Union(T.ObjectClass, T.Array), T.Object); |
| 490 CheckUnordered(T.Union(T.ObjectClass, T.String), T.Array); | 490 CheckUnordered(T.Union(T.ObjectClass, T.String), T.Array); |
| 491 CheckOverlap(T.Union(T.ObjectClass, T.String), T.Object); | 491 CheckOverlap(T.Union(T.ObjectClass, T.String), T.Object); |
| 492 CheckDisjoint(T.Union(T.ObjectClass, T.String), T.Number); | 492 CheckDisjoint(T.Union(T.ObjectClass, T.String), T.Number); |
| 493 | 493 |
| 494 // Bitset-constant | 494 // Bitset-constant |
| 495 CHECK(IsBitset(T.Union(T.SmiConstant, T.Number))); | 495 CHECK(this->IsBitset(T.Union(T.SmiConstant, T.Number))); |
| 496 CHECK(IsBitset(T.Union(T.ObjectConstant1, T.Object))); | 496 CHECK(this->IsBitset(T.Union(T.ObjectConstant1, T.Object))); |
| 497 CHECK(IsUnion(T.Union(T.ObjectConstant2, T.Number))); | 497 CHECK(this->IsUnion(T.Union(T.ObjectConstant2, T.Number))); |
| 498 | 498 |
| 499 CheckEqual(T.Union(T.SmiConstant, T.Number), T.Number); | 499 CheckEqual(T.Union(T.SmiConstant, T.Number), T.Number); |
| 500 CheckEqual(T.Union(T.ObjectConstant1, T.Object), T.Object); | 500 CheckEqual(T.Union(T.ObjectConstant1, T.Object), T.Object); |
| 501 CheckSub(T.None, T.Union(T.ObjectConstant1, T.Number)); | 501 CheckSub(T.None, T.Union(T.ObjectConstant1, T.Number)); |
| 502 CheckSub(T.Union(T.ObjectConstant1, T.Number), T.Any); | 502 CheckSub(T.Union(T.ObjectConstant1, T.Number), T.Any); |
| 503 CheckSub( | 503 CheckSub( |
| 504 T.Union(T.ObjectConstant1, T.Signed32), T.Union(T.Object, T.Number)); | 504 T.Union(T.ObjectConstant1, T.Signed32), T.Union(T.Object, T.Number)); |
| 505 CheckSub(T.Union(T.ObjectConstant1, T.Array), T.Object); | 505 CheckSub(T.Union(T.ObjectConstant1, T.Array), T.Object); |
| 506 CheckUnordered(T.Union(T.ObjectConstant1, T.String), T.Array); | 506 CheckUnordered(T.Union(T.ObjectConstant1, T.String), T.Array); |
| 507 CheckOverlap(T.Union(T.ObjectConstant1, T.String), T.Object); | 507 CheckOverlap(T.Union(T.ObjectConstant1, T.String), T.Object); |
| 508 CheckDisjoint(T.Union(T.ObjectConstant1, T.String), T.Number); | 508 CheckDisjoint(T.Union(T.ObjectConstant1, T.String), T.Number); |
| 509 CheckEqual(T.Union(T.Signed32, T.Signed32Constant), T.Signed32); | 509 CheckEqual(T.Union(T.Signed32, T.Signed32Constant), T.Signed32); |
| 510 | 510 |
| 511 // Class-constant | 511 // Class-constant |
| 512 CHECK(IsUnion(T.Union(T.ObjectConstant1, T.ObjectClass))); | 512 CHECK(this->IsUnion(T.Union(T.ObjectConstant1, T.ObjectClass))); |
| 513 CHECK(IsUnion(T.Union(T.ArrayClass, T.ObjectConstant2))); | 513 CHECK(this->IsUnion(T.Union(T.ArrayClass, T.ObjectConstant2))); |
| 514 | 514 |
| 515 CheckSub(T.None, T.Union(T.ObjectConstant1, T.ArrayClass)); | 515 CheckSub(T.None, T.Union(T.ObjectConstant1, T.ArrayClass)); |
| 516 CheckSub(T.Union(T.ObjectConstant1, T.ArrayClass), T.Any); | 516 CheckSub(T.Union(T.ObjectConstant1, T.ArrayClass), T.Any); |
| 517 CheckSub(T.Union(T.ObjectConstant1, T.ArrayClass), T.Object); | 517 CheckSub(T.Union(T.ObjectConstant1, T.ArrayClass), T.Object); |
| 518 CheckSub(T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ArrayClass)); | 518 CheckSub(T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ArrayClass)); |
| 519 CheckSub(T.ArrayClass, T.Union(T.ObjectConstant1, T.ArrayClass)); | 519 CheckSub(T.ArrayClass, T.Union(T.ObjectConstant1, T.ArrayClass)); |
| 520 CheckUnordered(T.ObjectClass, T.Union(T.ObjectConstant1, T.ArrayClass)); | 520 CheckUnordered(T.ObjectClass, T.Union(T.ObjectConstant1, T.ArrayClass)); |
| 521 CheckSub( | 521 CheckSub( |
| 522 T.Union(T.ObjectConstant1, T.ArrayClass), T.Union(T.Array, T.Object)); | 522 T.Union(T.ObjectConstant1, T.ArrayClass), T.Union(T.Array, T.Object)); |
| 523 CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayClass), T.ArrayConstant1); | 523 CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayClass), T.ArrayConstant1); |
| 524 CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayClass), T.ObjectConstant2); | 524 CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayClass), T.ObjectConstant2); |
| 525 CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayClass), T.ObjectClass); | 525 CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayClass), T.ObjectClass); |
| 526 | 526 |
| 527 // Bitset-union | 527 // Bitset-union |
| 528 CHECK(IsBitset( | 528 CHECK(this->IsBitset( |
| 529 T.Union(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass)))); | 529 T.Union(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass)))); |
| 530 CHECK(IsUnion(T.Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.Number))); | 530 CHECK(this->IsUnion( |
| 531 T.Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.Number))); |
| 531 | 532 |
| 532 CheckEqual( | 533 CheckEqual( |
| 533 T.Union(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass)), | 534 T.Union(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass)), |
| 534 T.Object); | 535 T.Object); |
| 535 CheckEqual( | 536 CheckEqual( |
| 536 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Number), | 537 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Number), |
| 537 T.Union(T.ObjectConstant1, T.Union(T.Number, T.ArrayClass))); | 538 T.Union(T.ObjectConstant1, T.Union(T.Number, T.ArrayClass))); |
| 538 CheckSub( | 539 CheckSub( |
| 539 T.Double, | 540 T.Double, |
| 540 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Number)); | 541 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Number)); |
| 541 CheckSub( | 542 CheckSub( |
| 542 T.ObjectConstant1, | 543 T.ObjectConstant1, |
| 543 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Double)); | 544 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Double)); |
| 544 CheckSub( | 545 CheckSub( |
| 545 T.None, | 546 T.None, |
| 546 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Double)); | 547 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Double)); |
| 547 CheckSub( | 548 CheckSub( |
| 548 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Double), | 549 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Double), |
| 549 T.Any); | 550 T.Any); |
| 550 CheckSub( | 551 CheckSub( |
| 551 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Double), | 552 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Double), |
| 552 T.Union(T.ObjectConstant1, T.Union(T.Number, T.ArrayClass))); | 553 T.Union(T.ObjectConstant1, T.Union(T.Number, T.ArrayClass))); |
| 553 | 554 |
| 554 // Class-union | 555 // Class-union |
| 555 CHECK(IsUnion( | 556 CHECK(this->IsUnion( |
| 556 T.Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ArrayClass))); | 557 T.Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ArrayClass))); |
| 557 CHECK(IsUnion( | 558 CHECK(this->IsUnion( |
| 558 T.Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ObjectClass))); | 559 T.Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ObjectClass))); |
| 559 | 560 |
| 560 CheckEqual( | 561 CheckEqual( |
| 561 T.Union(T.ObjectClass, T.Union(T.ObjectConstant1, T.ObjectClass)), | 562 T.Union(T.ObjectClass, T.Union(T.ObjectConstant1, T.ObjectClass)), |
| 562 T.Union(T.ObjectClass, T.ObjectConstant1)); | 563 T.Union(T.ObjectClass, T.ObjectConstant1)); |
| 563 CheckSub( | 564 CheckSub( |
| 564 T.None, | 565 T.None, |
| 565 T.Union(T.ObjectClass, T.Union(T.ObjectConstant1, T.ObjectClass))); | 566 T.Union(T.ObjectClass, T.Union(T.ObjectConstant1, T.ObjectClass))); |
| 566 CheckSub( | 567 CheckSub( |
| 567 T.Union(T.ObjectClass, T.Union(T.ObjectConstant1, T.ObjectClass)), | 568 T.Union(T.ObjectClass, T.Union(T.ObjectConstant1, T.ObjectClass)), |
| 568 T.Any); | 569 T.Any); |
| 569 CheckSub( | 570 CheckSub( |
| 570 T.Union(T.ObjectClass, T.Union(T.ObjectConstant1, T.ObjectClass)), | 571 T.Union(T.ObjectClass, T.Union(T.ObjectConstant1, T.ObjectClass)), |
| 571 T.Object); | 572 T.Object); |
| 572 CheckEqual( | 573 CheckEqual( |
| 573 T.Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ArrayClass), | 574 T.Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ArrayClass), |
| 574 T.Union(T.ArrayClass, T.ObjectConstant2)); | 575 T.Union(T.ArrayClass, T.ObjectConstant2)); |
| 575 | 576 |
| 576 // Constant-union | 577 // Constant-union |
| 577 CHECK(IsUnion(T.Union( | 578 CHECK(this->IsUnion(T.Union( |
| 578 T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2)))); | 579 T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2)))); |
| 579 CHECK(IsUnion(T.Union( | 580 CHECK(this->IsUnion(T.Union( |
| 580 T.Union(T.ArrayConstant1, T.ObjectClass), T.ObjectConstant1))); | 581 T.Union(T.ArrayConstant1, T.ObjectClass), T.ObjectConstant1))); |
| 581 CHECK(IsUnion(T.Union( | 582 CHECK(this->IsUnion(T.Union( |
| 582 T.Union(T.ArrayConstant1, T.ObjectConstant2), T.ObjectConstant1))); | 583 T.Union(T.ArrayConstant1, T.ObjectConstant2), T.ObjectConstant1))); |
| 583 | 584 |
| 584 CheckEqual( | 585 CheckEqual( |
| 585 T.Union( | 586 T.Union( |
| 586 T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2)), | 587 T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2)), |
| 587 T.Union(T.ObjectConstant2, T.ObjectConstant1)); | 588 T.Union(T.ObjectConstant2, T.ObjectConstant1)); |
| 588 CheckEqual( | 589 CheckEqual( |
| 589 T.Union( | 590 T.Union( |
| 590 T.Union(T.ArrayConstant1, T.ObjectConstant2), T.ObjectConstant1), | 591 T.Union(T.ArrayConstant1, T.ObjectConstant2), T.ObjectConstant1), |
| 591 T.Union( | 592 T.Union( |
| 592 T.ObjectConstant2, T.Union(T.ArrayConstant1, T.ObjectConstant1))); | 593 T.ObjectConstant2, T.Union(T.ArrayConstant1, T.ObjectConstant1))); |
| 593 | 594 |
| 594 // Union-union | 595 // Union-union |
| 595 CHECK(IsBitset(T.Union( | 596 CHECK(this->IsBitset(T.Union( |
| 596 T.Union(T.Number, T.ArrayClass), | 597 T.Union(T.Number, T.ArrayClass), |
| 597 T.Union(T.Signed32, T.Array)))); | 598 T.Union(T.Signed32, T.Array)))); |
| 598 CHECK(IsUnion(T.Union( | 599 CHECK(this->IsUnion(T.Union( |
| 599 T.Union(T.Number, T.ArrayClass), | 600 T.Union(T.Number, T.ArrayClass), |
| 600 T.Union(T.ObjectClass, T.ArrayClass)))); | 601 T.Union(T.ObjectClass, T.ArrayClass)))); |
| 601 | 602 |
| 602 CheckEqual( | 603 CheckEqual( |
| 603 T.Union( | 604 T.Union( |
| 604 T.Union(T.ObjectConstant2, T.ObjectConstant1), | 605 T.Union(T.ObjectConstant2, T.ObjectConstant1), |
| 605 T.Union(T.ObjectConstant1, T.ObjectConstant2)), | 606 T.Union(T.ObjectConstant1, T.ObjectConstant2)), |
| 606 T.Union(T.ObjectConstant2, T.ObjectConstant1)); | 607 T.Union(T.ObjectConstant2, T.ObjectConstant1)); |
| 607 CheckEqual( | 608 CheckEqual( |
| 608 T.Union( | 609 T.Union( |
| 609 T.Union(T.ObjectConstant2, T.ArrayConstant1), | 610 T.Union(T.ObjectConstant2, T.ArrayConstant1), |
| 610 T.Union(T.ObjectConstant1, T.ArrayConstant2)), | 611 T.Union(T.ObjectConstant1, T.ArrayConstant2)), |
| 611 T.Union( | 612 T.Union( |
| 612 T.Union(T.ObjectConstant1, T.ObjectConstant2), | 613 T.Union(T.ObjectConstant1, T.ObjectConstant2), |
| 613 T.ArrayConstant1)); | 614 T.ArrayConstant1)); |
| 614 CheckEqual( | 615 CheckEqual( |
| 615 T.Union(T.Union(T.Number, T.ArrayClass), T.Union(T.Smi, T.Array)), | 616 T.Union(T.Union(T.Number, T.ArrayClass), T.Union(T.Smi, T.Array)), |
| 616 T.Union(T.Number, T.Array)); | 617 T.Union(T.Number, T.Array)); |
| 617 } | 618 } |
| 618 | 619 |
| 619 void Intersect() { | 620 void Intersect() { |
| 620 // Bitset-bitset | 621 // Bitset-bitset |
| 621 CHECK(IsBitset(T.Intersect(T.Object, T.Number))); | 622 CHECK(this->IsBitset(T.Intersect(T.Object, T.Number))); |
| 622 CHECK(IsBitset(T.Intersect(T.Object, T.Object))); | 623 CHECK(this->IsBitset(T.Intersect(T.Object, T.Object))); |
| 623 CHECK(IsBitset(T.Intersect(T.Any, T.None))); | 624 CHECK(this->IsBitset(T.Intersect(T.Any, T.None))); |
| 624 | 625 |
| 625 CheckEqual(T.Intersect(T.None, T.Number), T.None); | 626 CheckEqual(T.Intersect(T.None, T.Number), T.None); |
| 626 CheckEqual(T.Intersect(T.Object, T.Proxy), T.None); | 627 CheckEqual(T.Intersect(T.Object, T.Proxy), T.None); |
| 627 CheckEqual(T.Intersect(T.Name, T.String), T.Intersect(T.String, T.Name)); | 628 CheckEqual(T.Intersect(T.Name, T.String), T.Intersect(T.String, T.Name)); |
| 628 CheckEqual(T.Intersect(T.UniqueName, T.String), T.InternalizedString); | 629 CheckEqual(T.Intersect(T.UniqueName, T.String), T.InternalizedString); |
| 629 | 630 |
| 630 // Class-class | 631 // Class-class |
| 631 CHECK(IsClass(T.Intersect(T.ObjectClass, T.ObjectClass))); | 632 CHECK(this->IsClass(T.Intersect(T.ObjectClass, T.ObjectClass))); |
| 632 CHECK(IsBitset(T.Intersect(T.ObjectClass, T.ArrayClass))); | 633 CHECK(this->IsBitset(T.Intersect(T.ObjectClass, T.ArrayClass))); |
| 633 | 634 |
| 634 CheckEqual(T.Intersect(T.ObjectClass, T.ObjectClass), T.ObjectClass); | 635 CheckEqual(T.Intersect(T.ObjectClass, T.ObjectClass), T.ObjectClass); |
| 635 CheckEqual(T.Intersect(T.ObjectClass, T.ArrayClass), T.None); | 636 CheckEqual(T.Intersect(T.ObjectClass, T.ArrayClass), T.None); |
| 636 | 637 |
| 637 // Constant-constant | 638 // Constant-constant |
| 638 CHECK(IsConstant(T.Intersect(T.ObjectConstant1, T.ObjectConstant1))); | 639 CHECK(this->IsConstant(T.Intersect(T.ObjectConstant1, T.ObjectConstant1))); |
| 639 CHECK(IsConstant(T.Intersect(T.ArrayConstant1, T.ArrayConstant2))); | 640 CHECK(this->IsConstant(T.Intersect(T.ArrayConstant1, T.ArrayConstant2))); |
| 640 CHECK(IsBitset(T.Intersect(T.ObjectConstant1, T.ObjectConstant2))); | 641 CHECK(this->IsBitset(T.Intersect(T.ObjectConstant1, T.ObjectConstant2))); |
| 641 | 642 |
| 642 CheckEqual( | 643 CheckEqual( |
| 643 T.Intersect(T.ObjectConstant1, T.ObjectConstant1), T.ObjectConstant1); | 644 T.Intersect(T.ObjectConstant1, T.ObjectConstant1), T.ObjectConstant1); |
| 644 CheckEqual( | 645 CheckEqual( |
| 645 T.Intersect(T.ArrayConstant1, T.ArrayConstant2), T.ArrayConstant1); | 646 T.Intersect(T.ArrayConstant1, T.ArrayConstant2), T.ArrayConstant1); |
| 646 CheckEqual(T.Intersect(T.ObjectConstant1, T.ObjectConstant2), T.None); | 647 CheckEqual(T.Intersect(T.ObjectConstant1, T.ObjectConstant2), T.None); |
| 647 | 648 |
| 648 // Bitset-class | 649 // Bitset-class |
| 649 CHECK(IsClass(T.Intersect(T.ObjectClass, T.Object))); | 650 CHECK(this->IsClass(T.Intersect(T.ObjectClass, T.Object))); |
| 650 CHECK(IsBitset(T.Intersect(T.ObjectClass, T.Number))); | 651 CHECK(this->IsBitset(T.Intersect(T.ObjectClass, T.Number))); |
| 651 | 652 |
| 652 CheckEqual(T.Intersect(T.ObjectClass, T.Object), T.ObjectClass); | 653 CheckEqual(T.Intersect(T.ObjectClass, T.Object), T.ObjectClass); |
| 653 CheckEqual(T.Intersect(T.ObjectClass, T.Array), T.None); | 654 CheckEqual(T.Intersect(T.ObjectClass, T.Array), T.None); |
| 654 CheckEqual(T.Intersect(T.ObjectClass, T.Number), T.None); | 655 CheckEqual(T.Intersect(T.ObjectClass, T.Number), T.None); |
| 655 | 656 |
| 656 // Bitset-constant | 657 // Bitset-constant |
| 657 CHECK(IsBitset(T.Intersect(T.Smi, T.Number))); | 658 CHECK(this->IsBitset(T.Intersect(T.Smi, T.Number))); |
| 658 CHECK(IsConstant(T.Intersect(T.SmiConstant, T.Number))); | 659 CHECK(this->IsConstant(T.Intersect(T.SmiConstant, T.Number))); |
| 659 CHECK(IsConstant(T.Intersect(T.ObjectConstant1, T.Object))); | 660 CHECK(this->IsConstant(T.Intersect(T.ObjectConstant1, T.Object))); |
| 660 | 661 |
| 661 CheckEqual(T.Intersect(T.Smi, T.Number), T.Smi); | 662 CheckEqual(T.Intersect(T.Smi, T.Number), T.Smi); |
| 662 CheckEqual(T.Intersect(T.SmiConstant, T.Number), T.SmiConstant); | 663 CheckEqual(T.Intersect(T.SmiConstant, T.Number), T.SmiConstant); |
| 663 CheckEqual(T.Intersect(T.ObjectConstant1, T.Object), T.ObjectConstant1); | 664 CheckEqual(T.Intersect(T.ObjectConstant1, T.Object), T.ObjectConstant1); |
| 664 | 665 |
| 665 // Class-constant | 666 // Class-constant |
| 666 CHECK(IsBitset(T.Intersect(T.ObjectConstant1, T.ObjectClass))); | 667 CHECK(this->IsBitset(T.Intersect(T.ObjectConstant1, T.ObjectClass))); |
| 667 CHECK(IsBitset(T.Intersect(T.ArrayClass, T.ObjectConstant2))); | 668 CHECK(this->IsBitset(T.Intersect(T.ArrayClass, T.ObjectConstant2))); |
| 668 | 669 |
| 669 CheckEqual(T.Intersect(T.ObjectConstant1, T.ObjectClass), T.None); | 670 CheckEqual(T.Intersect(T.ObjectConstant1, T.ObjectClass), T.None); |
| 670 CheckEqual(T.Intersect(T.ArrayClass, T.ObjectConstant2), T.None); | 671 CheckEqual(T.Intersect(T.ArrayClass, T.ObjectConstant2), T.None); |
| 671 | 672 |
| 672 // Bitset-union | 673 // Bitset-union |
| 673 CHECK(IsUnion( | 674 CHECK(this->IsUnion( |
| 674 T.Intersect(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass)))); | 675 T.Intersect(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass)))); |
| 675 CHECK(IsBitset( | 676 CHECK(this->IsBitset( |
| 676 T.Intersect(T.Union(T.ArrayClass, T.ObjectConstant2), T.Number))); | 677 T.Intersect(T.Union(T.ArrayClass, T.ObjectConstant2), T.Number))); |
| 677 | 678 |
| 678 CheckEqual( | 679 CheckEqual( |
| 679 T.Intersect(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass)), | 680 T.Intersect(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass)), |
| 680 T.Union(T.ObjectConstant1, T.ObjectClass)); | 681 T.Union(T.ObjectConstant1, T.ObjectClass)); |
| 681 CheckEqual( | 682 CheckEqual( |
| 682 T.Intersect(T.Union(T.ArrayClass, T.ObjectConstant1), T.Number), | 683 T.Intersect(T.Union(T.ArrayClass, T.ObjectConstant1), T.Number), |
| 683 T.None); | 684 T.None); |
| 684 | 685 |
| 685 // Class-union | 686 // Class-union |
| 686 CHECK(IsClass( | 687 CHECK(this->IsClass( |
| 687 T.Intersect(T.Union(T.ArrayClass, T.ObjectConstant2), T.ArrayClass))); | 688 T.Intersect(T.Union(T.ArrayClass, T.ObjectConstant2), T.ArrayClass))); |
| 688 CHECK(IsClass( | 689 CHECK(this->IsClass( |
| 689 T.Intersect(T.Union(T.Object, T.SmiConstant), T.ArrayClass))); | 690 T.Intersect(T.Union(T.Object, T.SmiConstant), T.ArrayClass))); |
| 690 CHECK(IsBitset( | 691 CHECK(this->IsBitset( |
| 691 T.Intersect(T.Union(T.ObjectClass, T.ArrayConstant1), T.ArrayClass))); | 692 T.Intersect(T.Union(T.ObjectClass, T.ArrayConstant1), T.ArrayClass))); |
| 692 | 693 |
| 693 CheckEqual( | 694 CheckEqual( |
| 694 T.Intersect(T.ArrayClass, T.Union(T.ObjectConstant2, T.ArrayClass)), | 695 T.Intersect(T.ArrayClass, T.Union(T.ObjectConstant2, T.ArrayClass)), |
| 695 T.ArrayClass); | 696 T.ArrayClass); |
| 696 CheckEqual( | 697 CheckEqual( |
| 697 T.Intersect(T.ArrayClass, T.Union(T.Object, T.SmiConstant)), | 698 T.Intersect(T.ArrayClass, T.Union(T.Object, T.SmiConstant)), |
| 698 T.ArrayClass); | 699 T.ArrayClass); |
| 699 CheckEqual( | 700 CheckEqual( |
| 700 T.Intersect(T.Union(T.ObjectClass, T.ArrayConstant1), T.ArrayClass), | 701 T.Intersect(T.Union(T.ObjectClass, T.ArrayConstant1), T.ArrayClass), |
| 701 T.None); | 702 T.None); |
| 702 | 703 |
| 703 // Constant-union | 704 // Constant-union |
| 704 CHECK(IsConstant(T.Intersect( | 705 CHECK(this->IsConstant(T.Intersect( |
| 705 T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2)))); | 706 T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2)))); |
| 706 CHECK(IsConstant(T.Intersect( | 707 CHECK(this->IsConstant(T.Intersect( |
| 707 T.Union(T.Number, T.ObjectClass), T.SmiConstant))); | 708 T.Union(T.Number, T.ObjectClass), T.SmiConstant))); |
| 708 CHECK(IsBitset(T.Intersect( | 709 CHECK(this->IsBitset(T.Intersect( |
| 709 T.Union(T.ArrayConstant1, T.ObjectClass), T.ObjectConstant1))); | 710 T.Union(T.ArrayConstant1, T.ObjectClass), T.ObjectConstant1))); |
| 710 | 711 |
| 711 CheckEqual( | 712 CheckEqual( |
| 712 T.Intersect( | 713 T.Intersect( |
| 713 T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2)), | 714 T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2)), |
| 714 T.ObjectConstant1); | 715 T.ObjectConstant1); |
| 715 CheckEqual( | 716 CheckEqual( |
| 716 T.Intersect(T.SmiConstant, T.Union(T.Number, T.ObjectConstant2)), | 717 T.Intersect(T.SmiConstant, T.Union(T.Number, T.ObjectConstant2)), |
| 717 T.SmiConstant); | 718 T.SmiConstant); |
| 718 CheckEqual( | 719 CheckEqual( |
| 719 T.Intersect( | 720 T.Intersect( |
| 720 T.Union(T.ArrayConstant1, T.ObjectClass), T.ObjectConstant1), | 721 T.Union(T.ArrayConstant1, T.ObjectClass), T.ObjectConstant1), |
| 721 T.None); | 722 T.None); |
| 722 | 723 |
| 723 // Union-union | 724 // Union-union |
| 724 CHECK(IsUnion(T.Intersect( | 725 CHECK(this->IsUnion(T.Intersect( |
| 725 T.Union(T.Number, T.ArrayClass), T.Union(T.Signed32, T.Array)))); | 726 T.Union(T.Number, T.ArrayClass), T.Union(T.Signed32, T.Array)))); |
| 726 CHECK(IsBitset(T.Intersect( | 727 CHECK(this->IsBitset(T.Intersect( |
| 727 T.Union(T.Number, T.ObjectClass), T.Union(T.Signed32, T.Array)))); | 728 T.Union(T.Number, T.ObjectClass), T.Union(T.Signed32, T.Array)))); |
| 728 | 729 |
| 729 CheckEqual( | 730 CheckEqual( |
| 730 T.Intersect( | 731 T.Intersect( |
| 731 T.Union(T.Number, T.ArrayClass), | 732 T.Union(T.Number, T.ArrayClass), |
| 732 T.Union(T.Smi, T.Array)), | 733 T.Union(T.Smi, T.Array)), |
| 733 T.Union(T.Smi, T.ArrayClass)); | 734 T.Union(T.Smi, T.ArrayClass)); |
| 734 CheckEqual( | 735 CheckEqual( |
| 735 T.Intersect( | 736 T.Intersect( |
| 736 T.Union(T.Number, T.ObjectClass), | 737 T.Union(T.Number, T.ObjectClass), |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 801 ZoneTests().Union(); | 802 ZoneTests().Union(); |
| 802 HeapTests().Union(); | 803 HeapTests().Union(); |
| 803 } | 804 } |
| 804 | 805 |
| 805 | 806 |
| 806 TEST(Intersect) { | 807 TEST(Intersect) { |
| 807 CcTest::InitializeVM(); | 808 CcTest::InitializeVM(); |
| 808 ZoneTests().Intersect(); | 809 ZoneTests().Intersect(); |
| 809 HeapTests().Intersect(); | 810 HeapTests().Intersect(); |
| 810 } | 811 } |
| OLD | NEW |