Reviewers: Toon Verwaest,
Description:
Minor clean-up of Type::Print
[email protected]
BUG=
Please review this at https://codereview.chromium.org/75423002/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+35, -52 lines):
M src/types.h
M src/types.cc
Index: src/types.cc
diff --git a/src/types.cc b/src/types.cc
index
9c576c07de9714c5aa9d24b5d39575ecadb45e85..fd85db580af9465aef1526553b7818b0999ac88c
100644
--- a/src/types.cc
+++ b/src/types.cc
@@ -525,25 +525,36 @@ void Type::TypePrint() {
}
+const char* Type::bitset_name(int bitset) {
+ switch (bitset) {
+ #define PRINT_COMPOSED_TYPE(type, value) case k##type: return #type;
+ BITSET_TYPE_LIST(PRINT_COMPOSED_TYPE)
+ #undef PRINT_COMPOSED_TYPE
+ default:
+ return NULL;
+ }
+}
+
+
void Type::TypePrint(FILE* out) {
if (is_bitset()) {
- int val = as_bitset();
- const char* composed_name = GetComposedName(val);
- if (composed_name != NULL) {
- PrintF(out, "%s", composed_name);
- return;
- }
- bool first_entry = true;
- PrintF(out, "{");
- for (unsigned i = 0; i < sizeof(val)*8; ++i) {
- int mask = (1 << i);
- if ((val & mask) != 0) {
- if (!first_entry) PrintF(out, ",");
- first_entry = false;
- PrintF(out, "%s", GetPrimitiveName(mask));
+ int bitset = as_bitset();
+ const char* name = bitset_name(bitset);
+ if (name != NULL) {
+ PrintF(out, "%s", name);
+ } else {
+ bool is_first = true;
+ PrintF(out, "(");
+ for (unsigned i = 0; i < sizeof(bitset)*8; ++i) {
+ int mask = (1 << i);
+ if ((bitset & mask) != 0) {
+ if (!is_first) PrintF(out, " | ");
+ is_first = false;
+ PrintF(out, "%s", bitset_name(mask));
+ }
}
+ PrintF(out, ")");
}
- PrintF(out, "}");
} else if (is_constant()) {
PrintF(out, "Constant(%p : ", static_cast<void*>(*as_constant()));
from_bitset(LubBitset())->TypePrint(out);
@@ -553,14 +564,14 @@ void Type::TypePrint(FILE* out) {
from_bitset(LubBitset())->TypePrint(out);
PrintF(")");
} else if (is_union()) {
- PrintF(out, "{");
+ PrintF(out, "(");
Handle<Unioned> unioned = as_union();
for (int i = 0; i < unioned->length(); ++i) {
Handle<Type> type_i = union_get(unioned, i);
- if (i > 0) PrintF(out, ",");
+ if (i > 0) PrintF(out, " | ");
type_i->TypePrint(out);
}
- PrintF(out, "}");
+ PrintF(out, ")");
}
}
#endif
Index: src/types.h
diff --git a/src/types.h b/src/types.h
index
2e21a9e7b8422a19213414a5934df632d38c8bf0..eab78c2760a2109c84f56b3f026efb6088b6f6c4
100644
--- a/src/types.h
+++ b/src/types.h
@@ -95,7 +95,7 @@ namespace internal {
// a concurrent compilation context.
-#define PRIMITIVE_TYPE_LIST(V) \
+#define BITSET_TYPE_LIST(V) \
V(None, 0) \
V(Null, 1 << 0) \
V(Undefined, 1 << 1) \
@@ -113,9 +113,8 @@ namespace internal {
V(RegExp, 1 << 13) \
V(OtherObject, 1 << 14) \
V(Proxy, 1 << 15) \
- V(Internal, 1 << 16)
-
-#define COMPOSED_TYPE_LIST(V) \
+ V(Internal, 1 << 16) \
+ \
V(Oddball, kBoolean | kNull | kUndefined) \
V(Signed32, kSmi | kOtherSigned32) \
V(Number, kSigned32 | kUnsigned32 | kDouble) \
@@ -131,17 +130,12 @@ namespace internal {
V(NonNumber, kAny - kNumber) \
V(Detectable, kAllocated - kUndetectable)
-#define TYPE_LIST(V) \
- PRIMITIVE_TYPE_LIST(V) \
- COMPOSED_TYPE_LIST(V)
-
-
class Type : public Object {
public:
#define DEFINE_TYPE_CONSTRUCTOR(type, value) \
static Type* type() { return from_bitset(k##type); }
- TYPE_LIST(DEFINE_TYPE_CONSTRUCTOR)
+ BITSET_TYPE_LIST(DEFINE_TYPE_CONSTRUCTOR)
#undef DEFINE_TYPE_CONSTRUCTOR
static Type* Class(Handle<i::Map> map) { return from_handle(map); }
@@ -226,7 +220,7 @@ class Type : public Object {
enum {
#define DECLARE_TYPE(type, value) k##type = (value),
- TYPE_LIST(DECLARE_TYPE)
+ BITSET_TYPE_LIST(DECLARE_TYPE)
#undef DECLARE_TYPE
kUnusedEOL = 0
};
@@ -277,29 +271,7 @@ class Type : public Object {
int ExtendIntersection(
Handle<Unioned> unioned, Handle<Type> type, int current_size);
- static const char* GetComposedName(int type) {
- switch (type) {
- #define PRINT_COMPOSED_TYPE(type, value) \
- case k##type: \
- return # type;
- COMPOSED_TYPE_LIST(PRINT_COMPOSED_TYPE)
- #undef PRINT_COMPOSED_TYPE
- }
- return NULL;
- }
-
- static const char* GetPrimitiveName(int type) {
- switch (type) {
- #define PRINT_PRIMITIVE_TYPE(type, value) \
- case k##type: \
- return # type;
- PRIMITIVE_TYPE_LIST(PRINT_PRIMITIVE_TYPE)
- #undef PRINT_PRIMITIVE_TYPE
- default:
- UNREACHABLE();
- return "InvalidType";
- }
- }
+ static const char* bitset_name(int bitset);
};
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.