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

Unified Diff: src/types.cc

Issue 1340023003: Fix printing of types and do some cleanups. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/types.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/types.cc
diff --git a/src/types.cc b/src/types.cc
index 0896b795a42cd87795c9a05e0066701617363369..868b073efaadd8c8faa854225467065b02a9448e 100644
--- a/src/types.cc
+++ b/src/types.cc
@@ -20,9 +20,14 @@ namespace internal {
// -----------------------------------------------------------------------------
// Range-related helper functions.
-// The result may be invalid (max < min).
+template <class Config>
+bool TypeImpl<Config>::Limits::IsEmpty() {
+ return this->min > this->max;
+}
+
+
template<class Config>
-typename TypeImpl<Config>::Limits TypeImpl<Config>::Intersect(
+typename TypeImpl<Config>::Limits TypeImpl<Config>::Limits::Intersect(
Limits lhs, Limits rhs) {
DisallowHeapAllocation no_allocation;
Limits result(lhs);
@@ -33,17 +38,11 @@ typename TypeImpl<Config>::Limits TypeImpl<Config>::Intersect(
template <class Config>
-bool TypeImpl<Config>::IsEmpty(Limits lim) {
- return lim.min > lim.max;
-}
-
-
-template <class Config>
-typename TypeImpl<Config>::Limits TypeImpl<Config>::Union(Limits lhs,
- Limits rhs) {
+typename TypeImpl<Config>::Limits TypeImpl<Config>::Limits::Union(
+ Limits lhs, Limits rhs) {
DisallowHeapAllocation no_allocation;
- if (IsEmpty(lhs)) return rhs;
- if (IsEmpty(rhs)) return lhs;
+ if (lhs.IsEmpty()) return rhs;
+ if (rhs.IsEmpty()) return lhs;
Limits result(lhs);
if (lhs.min > rhs.min) result.min = rhs.min;
if (lhs.max < rhs.max) result.max = rhs.max;
@@ -56,8 +55,7 @@ bool TypeImpl<Config>::Overlap(
typename TypeImpl<Config>::RangeType* lhs,
typename TypeImpl<Config>::RangeType* rhs) {
DisallowHeapAllocation no_allocation;
- typename TypeImpl<Config>::Limits lim = Intersect(Limits(lhs), Limits(rhs));
- return lim.min <= lim.max;
+ return !Limits::Intersect(Limits(lhs), Limits(rhs)).IsEmpty();
}
@@ -802,12 +800,12 @@ typename TypeImpl<Config>::TypeHandle TypeImpl<Config>::Intersect(
// Deal with bitsets.
result->Set(size++, BitsetType::New(bits, region));
- Limits lims = Limits::Empty(region);
+ Limits lims = Limits::Empty();
size = IntersectAux(type1, type2, result, size, &lims, region);
// If the range is not empty, then insert it into the union and
// remove the number bits from the bitset.
- if (!IsEmpty(lims)) {
+ if (!lims.IsEmpty()) {
size = UpdateRange(RangeType::New(lims, representation, region), result,
size, region);
@@ -849,7 +847,7 @@ typename TypeImpl<Config>::Limits TypeImpl<Config>::ToLimits(bitset bits,
bitset number_bits = BitsetType::NumberBits(bits);
if (number_bits == BitsetType::kNone) {
- return Limits::Empty(region);
+ return Limits::Empty();
}
return Limits(BitsetType::Min(number_bits), BitsetType::Max(number_bits));
@@ -861,7 +859,7 @@ typename TypeImpl<Config>::Limits TypeImpl<Config>::IntersectRangeAndBitset(
TypeHandle range, TypeHandle bitset, Region* region) {
Limits range_lims(range->AsRange());
Limits bitset_lims = ToLimits(bitset->AsBitset(), region);
- return Intersect(range_lims, bitset_lims);
+ return Limits::Intersect(range_lims, bitset_lims);
}
@@ -892,21 +890,22 @@ int TypeImpl<Config>::IntersectAux(TypeHandle lhs, TypeHandle rhs,
if (rhs->IsBitset()) {
Limits lim = IntersectRangeAndBitset(lhs, rhs, region);
- if (!IsEmpty(lim)) {
- *lims = Union(lim, *lims);
+ if (!lim.IsEmpty()) {
+ *lims = Limits::Union(lim, *lims);
}
return size;
}
if (rhs->IsClass()) {
- *lims = Union(Limits(lhs->AsRange()), *lims);
+ *lims = Limits::Union(Limits(lhs->AsRange()), *lims);
}
if (rhs->IsConstant() && Contains(lhs->AsRange(), rhs->AsConstant())) {
return AddToUnion(rhs, result, size, region);
}
if (rhs->IsRange()) {
- Limits lim = Intersect(Limits(lhs->AsRange()), Limits(rhs->AsRange()));
- if (!IsEmpty(lim)) {
- *lims = Union(lim, *lims);
+ Limits lim = Limits::Intersect(
+ Limits(lhs->AsRange()), Limits(rhs->AsRange()));
+ if (!lim.IsEmpty()) {
+ *lims = Limits::Union(lim, *lims);
}
}
return size;
@@ -1016,7 +1015,7 @@ typename TypeImpl<Config>::TypeHandle TypeImpl<Config>::Union(
RangeType* range1 = type1->GetRange();
RangeType* range2 = type2->GetRange();
if (range1 != NULL && range2 != NULL) {
- Limits lims = Union(Limits(range1), Limits(range2));
+ Limits lims = Limits::Union(Limits(range1), Limits(range2));
RangeHandle union_range = RangeType::New(lims, representation, region);
range = NormalizeRangeAndBitset(union_range, &new_bitset, region);
} else if (range1 != NULL) {
@@ -1266,6 +1265,7 @@ const char* TypeImpl<Config>::BitsetType::Name(bitset bits) {
#define RETURN_NAMED_SEMANTIC_TYPE(type, value) \
case SEMANTIC(k##type): return #type;
SEMANTIC_BITSET_TYPE_LIST(RETURN_NAMED_SEMANTIC_TYPE)
+ INTERNAL_BITSET_TYPE_LIST(RETURN_NAMED_SEMANTIC_TYPE)
#undef RETURN_NAMED_SEMANTIC_TYPE
default:
« no previous file with comments | « src/types.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698