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

Side by Side Diff: src/types.h

Issue 616563002: Get rid of code duplication by computing int Lub using range Lub. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 2 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 | « no previous file | 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/conversions.h" 8 #include "src/conversions.h"
9 #include "src/factory.h" 9 #include "src/factory.h"
10 #include "src/handles.h" 10 #include "src/handles.h"
(...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 591
592 static bool Is(bitset bits1, bitset bits2) { 592 static bool Is(bitset bits1, bitset bits2) {
593 return (bits1 | bits2) == bits2; 593 return (bits1 | bits2) == bits2;
594 } 594 }
595 595
596 static double Min(bitset); 596 static double Min(bitset);
597 static double Max(bitset); 597 static double Max(bitset);
598 598
599 static bitset Glb(TypeImpl* type); // greatest lower bound that's a bitset 599 static bitset Glb(TypeImpl* type); // greatest lower bound that's a bitset
600 static bitset Lub(TypeImpl* type); // least upper bound that's a bitset 600 static bitset Lub(TypeImpl* type); // least upper bound that's a bitset
601 static bitset Lub(i::Map* map);
601 static bitset Lub(i::Object* value); 602 static bitset Lub(i::Object* value);
602 static bitset Lub(double value); 603 static bitset Lub(double value);
603 static bitset Lub(int32_t value); 604 static bitset Lub(double min, double max);
604 static bitset Lub(uint32_t value);
605 static bitset Lub(i::Map* map);
606 static bitset Lub(Limits lim);
607 605
608 static const char* Name(bitset); 606 static const char* Name(bitset);
609 static void Print(OStream& os, bitset); // NOLINT 607 static void Print(OStream& os, bitset); // NOLINT
610 #ifdef DEBUG 608 #ifdef DEBUG
611 static void Print(bitset); 609 static void Print(bitset);
612 #endif 610 #endif
613 611
614 private: 612 private:
615 struct BitsetMin{ 613 struct BitsetMin{
616 bitset bits; 614 bitset bits;
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
774 public: 772 public:
775 int BitsetLub() { return this->Get(0)->AsBitset(); } 773 int BitsetLub() { return this->Get(0)->AsBitset(); }
776 i::Handle<i::Object> Min() { return this->template GetValue<i::Object>(1); } 774 i::Handle<i::Object> Min() { return this->template GetValue<i::Object>(1); }
777 i::Handle<i::Object> Max() { return this->template GetValue<i::Object>(2); } 775 i::Handle<i::Object> Max() { return this->template GetValue<i::Object>(2); }
778 776
779 static RangeHandle New( 777 static RangeHandle New(
780 i::Handle<i::Object> min, i::Handle<i::Object> max, Region* region) { 778 i::Handle<i::Object> min, i::Handle<i::Object> max, Region* region) {
781 DCHECK(min->Number() <= max->Number()); 779 DCHECK(min->Number() <= max->Number());
782 RangeHandle type = Config::template cast<RangeType>( 780 RangeHandle type = Config::template cast<RangeType>(
783 StructuralType::New(StructuralType::kRangeTag, 3, region)); 781 StructuralType::New(StructuralType::kRangeTag, 3, region));
784 type->Set(0, BitsetType::New(BitsetType::Lub(Limits(min, max)), region)); 782 type->Set(0, BitsetType::New(
783 BitsetType::Lub(min->Number(), max->Number()), region));
785 type->SetValue(1, min); 784 type->SetValue(1, min);
786 type->SetValue(2, max); 785 type->SetValue(2, max);
787 return type; 786 return type;
788 } 787 }
789 788
790 static RangeHandle New(Limits lim, Region* region) { 789 static RangeHandle New(Limits lim, Region* region) {
791 return New(lim.min, lim.max, region); 790 return New(lim.min, lim.max, region);
792 } 791 }
793 792
794 static RangeType* cast(TypeImpl* type) { 793 static RangeType* cast(TypeImpl* type) {
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
1042 bool Narrows(BoundsImpl that) { 1041 bool Narrows(BoundsImpl that) {
1043 return that.lower->Is(this->lower) && this->upper->Is(that.upper); 1042 return that.lower->Is(this->lower) && this->upper->Is(that.upper);
1044 } 1043 }
1045 }; 1044 };
1046 1045
1047 typedef BoundsImpl<ZoneTypeConfig> Bounds; 1046 typedef BoundsImpl<ZoneTypeConfig> Bounds;
1048 1047
1049 } } // namespace v8::internal 1048 } } // namespace v8::internal
1050 1049
1051 #endif // V8_TYPES_H_ 1050 #endif // V8_TYPES_H_
OLDNEW
« no previous file with comments | « no previous file | src/types.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698