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

Side by Side Diff: src/types.h

Issue 430503007: Rename ASSERT* to DCHECK*. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: REBASE and fixes Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « src/type-info.cc ('k') | src/types.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 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 #ifndef V8_TYPES_H_ 5 #ifndef V8_TYPES_H_
6 #define V8_TYPES_H_ 6 #define V8_TYPES_H_
7 7
8 #include "src/factory.h" 8 #include "src/factory.h"
9 #include "src/handles.h" 9 #include "src/handles.h"
10 10
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 TypeImpl* unhandle() { return this; } 446 TypeImpl* unhandle() { return this; }
447 447
448 // Internal inspection. 448 // Internal inspection.
449 449
450 bool IsNone() { return this == None(); } 450 bool IsNone() { return this == None(); }
451 bool IsAny() { return this == Any(); } 451 bool IsAny() { return this == Any(); }
452 bool IsBitset() { return Config::is_bitset(this); } 452 bool IsBitset() { return Config::is_bitset(this); }
453 bool IsUnion() { return Config::is_struct(this, StructuralType::kUnionTag); } 453 bool IsUnion() { return Config::is_struct(this, StructuralType::kUnionTag); }
454 454
455 int AsBitset() { 455 int AsBitset() {
456 ASSERT(this->IsBitset()); 456 DCHECK(this->IsBitset());
457 return static_cast<BitsetType*>(this)->Bitset(); 457 return static_cast<BitsetType*>(this)->Bitset();
458 } 458 }
459 UnionType* AsUnion() { return UnionType::cast(this); } 459 UnionType* AsUnion() { return UnionType::cast(this); }
460 460
461 // Auxiliary functions. 461 // Auxiliary functions.
462 462
463 int BitsetGlb() { return BitsetType::Glb(this); } 463 int BitsetGlb() { return BitsetType::Glb(this); }
464 int BitsetLub() { return BitsetType::Lub(this); } 464 int BitsetLub() { return BitsetType::Lub(this); }
465 int InherentBitsetLub() { return BitsetType::InherentLub(this); } 465 int InherentBitsetLub() { return BitsetType::InherentLub(this); }
466 466
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 kContextTag, 539 kContextTag,
540 kArrayTag, 540 kArrayTag,
541 kFunctionTag, 541 kFunctionTag,
542 kUnionTag 542 kUnionTag
543 }; 543 };
544 544
545 int Length() { 545 int Length() {
546 return Config::struct_length(Config::as_struct(this)); 546 return Config::struct_length(Config::as_struct(this));
547 } 547 }
548 TypeHandle Get(int i) { 548 TypeHandle Get(int i) {
549 ASSERT(0 <= i && i < this->Length()); 549 DCHECK(0 <= i && i < this->Length());
550 return Config::struct_get(Config::as_struct(this), i); 550 return Config::struct_get(Config::as_struct(this), i);
551 } 551 }
552 void Set(int i, TypeHandle type) { 552 void Set(int i, TypeHandle type) {
553 ASSERT(0 <= i && i < this->Length()); 553 DCHECK(0 <= i && i < this->Length());
554 Config::struct_set(Config::as_struct(this), i, type); 554 Config::struct_set(Config::as_struct(this), i, type);
555 } 555 }
556 void Shrink(int length) { 556 void Shrink(int length) {
557 ASSERT(2 <= length && length <= this->Length()); 557 DCHECK(2 <= length && length <= this->Length());
558 Config::struct_shrink(Config::as_struct(this), length); 558 Config::struct_shrink(Config::as_struct(this), length);
559 } 559 }
560 template<class V> i::Handle<V> GetValue(int i) { 560 template<class V> i::Handle<V> GetValue(int i) {
561 ASSERT(0 <= i && i < this->Length()); 561 DCHECK(0 <= i && i < this->Length());
562 return Config::template struct_get_value<V>(Config::as_struct(this), i); 562 return Config::template struct_get_value<V>(Config::as_struct(this), i);
563 } 563 }
564 template<class V> void SetValue(int i, i::Handle<V> x) { 564 template<class V> void SetValue(int i, i::Handle<V> x) {
565 ASSERT(0 <= i && i < this->Length()); 565 DCHECK(0 <= i && i < this->Length());
566 Config::struct_set_value(Config::as_struct(this), i, x); 566 Config::struct_set_value(Config::as_struct(this), i, x);
567 } 567 }
568 568
569 static TypeHandle New(Tag tag, int length, Region* region) { 569 static TypeHandle New(Tag tag, int length, Region* region) {
570 ASSERT(1 <= length); 570 DCHECK(1 <= length);
571 return Config::from_struct(Config::struct_create(tag, length, region)); 571 return Config::from_struct(Config::struct_create(tag, length, region));
572 } 572 }
573 }; 573 };
574 574
575 575
576 // ----------------------------------------------------------------------------- 576 // -----------------------------------------------------------------------------
577 // Union types (internal). 577 // Union types (internal).
578 // A union is a structured type with the following invariants: 578 // A union is a structured type with the following invariants:
579 // - its length is at least 2 579 // - its length is at least 2
580 // - at most one field is a bitset, and it must go into index 0 580 // - at most one field is a bitset, and it must go into index 0
581 // - no field is a union 581 // - no field is a union
582 // - no field is a subtype of any other field 582 // - no field is a subtype of any other field
583 template<class Config> 583 template<class Config>
584 class TypeImpl<Config>::UnionType : public StructuralType { 584 class TypeImpl<Config>::UnionType : public StructuralType {
585 public: 585 public:
586 static UnionHandle New(int length, Region* region) { 586 static UnionHandle New(int length, Region* region) {
587 return Config::template cast<UnionType>( 587 return Config::template cast<UnionType>(
588 StructuralType::New(StructuralType::kUnionTag, length, region)); 588 StructuralType::New(StructuralType::kUnionTag, length, region));
589 } 589 }
590 590
591 static UnionType* cast(TypeImpl* type) { 591 static UnionType* cast(TypeImpl* type) {
592 ASSERT(type->IsUnion()); 592 DCHECK(type->IsUnion());
593 return static_cast<UnionType*>(type); 593 return static_cast<UnionType*>(type);
594 } 594 }
595 595
596 bool Wellformed(); 596 bool Wellformed();
597 }; 597 };
598 598
599 599
600 // ----------------------------------------------------------------------------- 600 // -----------------------------------------------------------------------------
601 // Class types. 601 // Class types.
602 602
603 template<class Config> 603 template<class Config>
604 class TypeImpl<Config>::ClassType : public StructuralType { 604 class TypeImpl<Config>::ClassType : public StructuralType {
605 public: 605 public:
606 TypeHandle Bound(Region* region) { 606 TypeHandle Bound(Region* region) {
607 return Config::is_class(this) 607 return Config::is_class(this)
608 ? BitsetType::New(BitsetType::Lub(*Config::as_class(this)), region) 608 ? BitsetType::New(BitsetType::Lub(*Config::as_class(this)), region)
609 : this->Get(0); 609 : this->Get(0);
610 } 610 }
611 i::Handle<i::Map> Map() { 611 i::Handle<i::Map> Map() {
612 return Config::is_class(this) 612 return Config::is_class(this)
613 ? Config::as_class(this) 613 ? Config::as_class(this)
614 : this->template GetValue<i::Map>(1); 614 : this->template GetValue<i::Map>(1);
615 } 615 }
616 616
617 static ClassHandle New( 617 static ClassHandle New(
618 i::Handle<i::Map> map, TypeHandle bound, Region* region) { 618 i::Handle<i::Map> map, TypeHandle bound, Region* region) {
619 ASSERT(BitsetType::Is(bound->AsBitset(), BitsetType::Lub(*map))); 619 DCHECK(BitsetType::Is(bound->AsBitset(), BitsetType::Lub(*map)));
620 ClassHandle type = Config::template cast<ClassType>( 620 ClassHandle type = Config::template cast<ClassType>(
621 StructuralType::New(StructuralType::kClassTag, 2, region)); 621 StructuralType::New(StructuralType::kClassTag, 2, region));
622 type->Set(0, bound); 622 type->Set(0, bound);
623 type->SetValue(1, map); 623 type->SetValue(1, map);
624 return type; 624 return type;
625 } 625 }
626 626
627 static ClassHandle New(i::Handle<i::Map> map, Region* region) { 627 static ClassHandle New(i::Handle<i::Map> map, Region* region) {
628 ClassHandle type = 628 ClassHandle type =
629 Config::template cast<ClassType>(Config::from_class(map, region)); 629 Config::template cast<ClassType>(Config::from_class(map, region));
630 if (type->IsClass()) { 630 if (type->IsClass()) {
631 return type; 631 return type;
632 } else { 632 } else {
633 TypeHandle bound = BitsetType::New(BitsetType::Lub(*map), region); 633 TypeHandle bound = BitsetType::New(BitsetType::Lub(*map), region);
634 return New(map, bound, region); 634 return New(map, bound, region);
635 } 635 }
636 } 636 }
637 637
638 static ClassType* cast(TypeImpl* type) { 638 static ClassType* cast(TypeImpl* type) {
639 ASSERT(type->IsClass()); 639 DCHECK(type->IsClass());
640 return static_cast<ClassType*>(type); 640 return static_cast<ClassType*>(type);
641 } 641 }
642 }; 642 };
643 643
644 644
645 // ----------------------------------------------------------------------------- 645 // -----------------------------------------------------------------------------
646 // Constant types. 646 // Constant types.
647 647
648 template<class Config> 648 template<class Config>
649 class TypeImpl<Config>::ConstantType : public StructuralType { 649 class TypeImpl<Config>::ConstantType : public StructuralType {
650 public: 650 public:
651 TypeHandle Bound() { return this->Get(0); } 651 TypeHandle Bound() { return this->Get(0); }
652 i::Handle<i::Object> Value() { return this->template GetValue<i::Object>(1); } 652 i::Handle<i::Object> Value() { return this->template GetValue<i::Object>(1); }
653 653
654 static ConstantHandle New( 654 static ConstantHandle New(
655 i::Handle<i::Object> value, TypeHandle bound, Region* region) { 655 i::Handle<i::Object> value, TypeHandle bound, Region* region) {
656 ASSERT(BitsetType::Is(bound->AsBitset(), BitsetType::Lub(*value))); 656 DCHECK(BitsetType::Is(bound->AsBitset(), BitsetType::Lub(*value)));
657 ConstantHandle type = Config::template cast<ConstantType>( 657 ConstantHandle type = Config::template cast<ConstantType>(
658 StructuralType::New(StructuralType::kConstantTag, 2, region)); 658 StructuralType::New(StructuralType::kConstantTag, 2, region));
659 type->Set(0, bound); 659 type->Set(0, bound);
660 type->SetValue(1, value); 660 type->SetValue(1, value);
661 return type; 661 return type;
662 } 662 }
663 663
664 static ConstantHandle New(i::Handle<i::Object> value, Region* region) { 664 static ConstantHandle New(i::Handle<i::Object> value, Region* region) {
665 TypeHandle bound = BitsetType::New(BitsetType::Lub(*value), region); 665 TypeHandle bound = BitsetType::New(BitsetType::Lub(*value), region);
666 return New(value, bound, region); 666 return New(value, bound, region);
667 } 667 }
668 668
669 static ConstantType* cast(TypeImpl* type) { 669 static ConstantType* cast(TypeImpl* type) {
670 ASSERT(type->IsConstant()); 670 DCHECK(type->IsConstant());
671 return static_cast<ConstantType*>(type); 671 return static_cast<ConstantType*>(type);
672 } 672 }
673 }; 673 };
674 674
675 675
676 // ----------------------------------------------------------------------------- 676 // -----------------------------------------------------------------------------
677 // Range types. 677 // Range types.
678 678
679 template<class Config> 679 template<class Config>
680 class TypeImpl<Config>::RangeType : public StructuralType { 680 class TypeImpl<Config>::RangeType : public StructuralType {
681 public: 681 public:
682 TypeHandle Bound() { return this->Get(0); } 682 TypeHandle Bound() { return this->Get(0); }
683 double Min() { return this->template GetValue<i::HeapNumber>(1)->value(); } 683 double Min() { return this->template GetValue<i::HeapNumber>(1)->value(); }
684 double Max() { return this->template GetValue<i::HeapNumber>(2)->value(); } 684 double Max() { return this->template GetValue<i::HeapNumber>(2)->value(); }
685 685
686 static RangeHandle New( 686 static RangeHandle New(
687 double min, double max, TypeHandle bound, Region* region) { 687 double min, double max, TypeHandle bound, Region* region) {
688 ASSERT(BitsetType::Is(bound->AsBitset(), BitsetType::kNumber)); 688 DCHECK(BitsetType::Is(bound->AsBitset(), BitsetType::kNumber));
689 ASSERT(!std::isnan(min) && !std::isnan(max) && min <= max); 689 DCHECK(!std::isnan(min) && !std::isnan(max) && min <= max);
690 RangeHandle type = Config::template cast<RangeType>( 690 RangeHandle type = Config::template cast<RangeType>(
691 StructuralType::New(StructuralType::kRangeTag, 3, region)); 691 StructuralType::New(StructuralType::kRangeTag, 3, region));
692 type->Set(0, bound); 692 type->Set(0, bound);
693 Factory* factory = Config::isolate(region)->factory(); 693 Factory* factory = Config::isolate(region)->factory();
694 Handle<HeapNumber> minV = factory->NewHeapNumber(min); 694 Handle<HeapNumber> minV = factory->NewHeapNumber(min);
695 Handle<HeapNumber> maxV = factory->NewHeapNumber(max); 695 Handle<HeapNumber> maxV = factory->NewHeapNumber(max);
696 type->SetValue(1, minV); 696 type->SetValue(1, minV);
697 type->SetValue(2, maxV); 697 type->SetValue(2, maxV);
698 return type; 698 return type;
699 } 699 }
700 700
701 static RangeHandle New(double min, double max, Region* region) { 701 static RangeHandle New(double min, double max, Region* region) {
702 TypeHandle bound = BitsetType::New(BitsetType::kNumber, region); 702 TypeHandle bound = BitsetType::New(BitsetType::kNumber, region);
703 return New(min, max, bound, region); 703 return New(min, max, bound, region);
704 } 704 }
705 705
706 static RangeType* cast(TypeImpl* type) { 706 static RangeType* cast(TypeImpl* type) {
707 ASSERT(type->IsRange()); 707 DCHECK(type->IsRange());
708 return static_cast<RangeType*>(type); 708 return static_cast<RangeType*>(type);
709 } 709 }
710 }; 710 };
711 711
712 712
713 // ----------------------------------------------------------------------------- 713 // -----------------------------------------------------------------------------
714 // Context types. 714 // Context types.
715 715
716 template<class Config> 716 template<class Config>
717 class TypeImpl<Config>::ContextType : public StructuralType { 717 class TypeImpl<Config>::ContextType : public StructuralType {
718 public: 718 public:
719 TypeHandle Bound() { return this->Get(0); } 719 TypeHandle Bound() { return this->Get(0); }
720 TypeHandle Outer() { return this->Get(1); } 720 TypeHandle Outer() { return this->Get(1); }
721 721
722 static ContextHandle New(TypeHandle outer, TypeHandle bound, Region* region) { 722 static ContextHandle New(TypeHandle outer, TypeHandle bound, Region* region) {
723 ASSERT(BitsetType::Is( 723 DCHECK(BitsetType::Is(
724 bound->AsBitset(), BitsetType::kInternal & BitsetType::kTaggedPtr)); 724 bound->AsBitset(), BitsetType::kInternal & BitsetType::kTaggedPtr));
725 ContextHandle type = Config::template cast<ContextType>( 725 ContextHandle type = Config::template cast<ContextType>(
726 StructuralType::New(StructuralType::kContextTag, 2, region)); 726 StructuralType::New(StructuralType::kContextTag, 2, region));
727 type->Set(0, bound); 727 type->Set(0, bound);
728 type->Set(1, outer); 728 type->Set(1, outer);
729 return type; 729 return type;
730 } 730 }
731 731
732 static ContextHandle New(TypeHandle outer, Region* region) { 732 static ContextHandle New(TypeHandle outer, Region* region) {
733 TypeHandle bound = BitsetType::New( 733 TypeHandle bound = BitsetType::New(
734 BitsetType::kInternal & BitsetType::kTaggedPtr, region); 734 BitsetType::kInternal & BitsetType::kTaggedPtr, region);
735 return New(outer, bound, region); 735 return New(outer, bound, region);
736 } 736 }
737 737
738 static ContextType* cast(TypeImpl* type) { 738 static ContextType* cast(TypeImpl* type) {
739 ASSERT(type->IsContext()); 739 DCHECK(type->IsContext());
740 return static_cast<ContextType*>(type); 740 return static_cast<ContextType*>(type);
741 } 741 }
742 }; 742 };
743 743
744 744
745 // ----------------------------------------------------------------------------- 745 // -----------------------------------------------------------------------------
746 // Array types. 746 // Array types.
747 747
748 template<class Config> 748 template<class Config>
749 class TypeImpl<Config>::ArrayType : public StructuralType { 749 class TypeImpl<Config>::ArrayType : public StructuralType {
750 public: 750 public:
751 TypeHandle Bound() { return this->Get(0); } 751 TypeHandle Bound() { return this->Get(0); }
752 TypeHandle Element() { return this->Get(1); } 752 TypeHandle Element() { return this->Get(1); }
753 753
754 static ArrayHandle New(TypeHandle element, TypeHandle bound, Region* region) { 754 static ArrayHandle New(TypeHandle element, TypeHandle bound, Region* region) {
755 ASSERT(BitsetType::Is(bound->AsBitset(), BitsetType::kArray)); 755 DCHECK(BitsetType::Is(bound->AsBitset(), BitsetType::kArray));
756 ArrayHandle type = Config::template cast<ArrayType>( 756 ArrayHandle type = Config::template cast<ArrayType>(
757 StructuralType::New(StructuralType::kArrayTag, 2, region)); 757 StructuralType::New(StructuralType::kArrayTag, 2, region));
758 type->Set(0, bound); 758 type->Set(0, bound);
759 type->Set(1, element); 759 type->Set(1, element);
760 return type; 760 return type;
761 } 761 }
762 762
763 static ArrayHandle New(TypeHandle element, Region* region) { 763 static ArrayHandle New(TypeHandle element, Region* region) {
764 TypeHandle bound = BitsetType::New(BitsetType::kArray, region); 764 TypeHandle bound = BitsetType::New(BitsetType::kArray, region);
765 return New(element, bound, region); 765 return New(element, bound, region);
766 } 766 }
767 767
768 static ArrayType* cast(TypeImpl* type) { 768 static ArrayType* cast(TypeImpl* type) {
769 ASSERT(type->IsArray()); 769 DCHECK(type->IsArray());
770 return static_cast<ArrayType*>(type); 770 return static_cast<ArrayType*>(type);
771 } 771 }
772 }; 772 };
773 773
774 774
775 // ----------------------------------------------------------------------------- 775 // -----------------------------------------------------------------------------
776 // Function types. 776 // Function types.
777 777
778 template<class Config> 778 template<class Config>
779 class TypeImpl<Config>::FunctionType : public StructuralType { 779 class TypeImpl<Config>::FunctionType : public StructuralType {
780 public: 780 public:
781 int Arity() { return this->Length() - 3; } 781 int Arity() { return this->Length() - 3; }
782 TypeHandle Bound() { return this->Get(0); } 782 TypeHandle Bound() { return this->Get(0); }
783 TypeHandle Result() { return this->Get(1); } 783 TypeHandle Result() { return this->Get(1); }
784 TypeHandle Receiver() { return this->Get(2); } 784 TypeHandle Receiver() { return this->Get(2); }
785 TypeHandle Parameter(int i) { return this->Get(3 + i); } 785 TypeHandle Parameter(int i) { return this->Get(3 + i); }
786 786
787 void InitParameter(int i, TypeHandle type) { this->Set(3 + i, type); } 787 void InitParameter(int i, TypeHandle type) { this->Set(3 + i, type); }
788 788
789 static FunctionHandle New( 789 static FunctionHandle New(
790 TypeHandle result, TypeHandle receiver, TypeHandle bound, 790 TypeHandle result, TypeHandle receiver, TypeHandle bound,
791 int arity, Region* region) { 791 int arity, Region* region) {
792 ASSERT(BitsetType::Is(bound->AsBitset(), BitsetType::kFunction)); 792 DCHECK(BitsetType::Is(bound->AsBitset(), BitsetType::kFunction));
793 FunctionHandle type = Config::template cast<FunctionType>( 793 FunctionHandle type = Config::template cast<FunctionType>(
794 StructuralType::New(StructuralType::kFunctionTag, 3 + arity, region)); 794 StructuralType::New(StructuralType::kFunctionTag, 3 + arity, region));
795 type->Set(0, bound); 795 type->Set(0, bound);
796 type->Set(1, result); 796 type->Set(1, result);
797 type->Set(2, receiver); 797 type->Set(2, receiver);
798 return type; 798 return type;
799 } 799 }
800 800
801 static FunctionHandle New( 801 static FunctionHandle New(
802 TypeHandle result, TypeHandle receiver, int arity, Region* region) { 802 TypeHandle result, TypeHandle receiver, int arity, Region* region) {
803 TypeHandle bound = BitsetType::New(BitsetType::kFunction, region); 803 TypeHandle bound = BitsetType::New(BitsetType::kFunction, region);
804 return New(result, receiver, bound, arity, region); 804 return New(result, receiver, bound, arity, region);
805 } 805 }
806 806
807 static FunctionType* cast(TypeImpl* type) { 807 static FunctionType* cast(TypeImpl* type) {
808 ASSERT(type->IsFunction()); 808 DCHECK(type->IsFunction());
809 return static_cast<FunctionType*>(type); 809 return static_cast<FunctionType*>(type);
810 } 810 }
811 }; 811 };
812 812
813 813
814 // ----------------------------------------------------------------------------- 814 // -----------------------------------------------------------------------------
815 // Type iterators. 815 // Type iterators.
816 816
817 template<class Config> template<class T> 817 template<class Config> template<class T>
818 class TypeImpl<Config>::Iterator { 818 class TypeImpl<Config>::Iterator {
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
944 typedef TypeImpl<Config> Type; 944 typedef TypeImpl<Config> Type;
945 typedef typename Type::TypeHandle TypeHandle; 945 typedef typename Type::TypeHandle TypeHandle;
946 typedef typename Type::Region Region; 946 typedef typename Type::Region Region;
947 947
948 TypeHandle lower; 948 TypeHandle lower;
949 TypeHandle upper; 949 TypeHandle upper;
950 950
951 BoundsImpl() {} 951 BoundsImpl() {}
952 explicit BoundsImpl(TypeHandle t) : lower(t), upper(t) {} 952 explicit BoundsImpl(TypeHandle t) : lower(t), upper(t) {}
953 BoundsImpl(TypeHandle l, TypeHandle u) : lower(l), upper(u) { 953 BoundsImpl(TypeHandle l, TypeHandle u) : lower(l), upper(u) {
954 ASSERT(lower->Is(upper)); 954 DCHECK(lower->Is(upper));
955 } 955 }
956 956
957 // Unrestricted bounds. 957 // Unrestricted bounds.
958 static BoundsImpl Unbounded(Region* region) { 958 static BoundsImpl Unbounded(Region* region) {
959 return BoundsImpl(Type::None(region), Type::Any(region)); 959 return BoundsImpl(Type::None(region), Type::Any(region));
960 } 960 }
961 961
962 // Meet: both b1 and b2 are known to hold. 962 // Meet: both b1 and b2 are known to hold.
963 static BoundsImpl Both(BoundsImpl b1, BoundsImpl b2, Region* region) { 963 static BoundsImpl Both(BoundsImpl b1, BoundsImpl b2, Region* region) {
964 TypeHandle lower = Type::Union(b1.lower, b2.lower, region); 964 TypeHandle lower = Type::Union(b1.lower, b2.lower, region);
(...skipping 25 matching lines...) Expand all
990 bool Narrows(BoundsImpl that) { 990 bool Narrows(BoundsImpl that) {
991 return that.lower->Is(this->lower) && this->upper->Is(that.upper); 991 return that.lower->Is(this->lower) && this->upper->Is(that.upper);
992 } 992 }
993 }; 993 };
994 994
995 typedef BoundsImpl<ZoneTypeConfig> Bounds; 995 typedef BoundsImpl<ZoneTypeConfig> Bounds;
996 996
997 } } // namespace v8::internal 997 } } // namespace v8::internal
998 998
999 #endif // V8_TYPES_H_ 999 #endif // V8_TYPES_H_
OLDNEW
« no previous file with comments | « src/type-info.cc ('k') | src/types.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698