Reviewers: fschneider,

Description:
Fit Representation and HType in one word to make HValue smaller.

Please review this at http://codereview.chromium.org/6813091/

Affected files:
  M src/hydrogen-instructions.h


Index: src/hydrogen-instructions.h
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
index c7365531b3f2af656a4c30d19788cccd12642d11..a623775f2f8aa68dddb9fbd3c93703321bfde43f 100644
--- a/src/hydrogen-instructions.h
+++ b/src/hydrogen-instructions.h
@@ -274,7 +274,7 @@ class Representation {
     return kind_ == other.kind_;
   }

-  Kind kind() const { return kind_; }
+  Kind kind() const { return static_cast<Kind>(kind_); }
   bool IsNone() const { return kind_ == kNone; }
   bool IsTagged() const { return kind_ == kTagged; }
   bool IsInteger32() const { return kind_ == kInteger32; }
@@ -288,7 +288,10 @@ class Representation {
  private:
   explicit Representation(Kind k) : kind_(k) { }

-  Kind kind_;
+  // Make sure kind fits in int8.
+  STATIC_ASSERT(kNumRepresentations <= (1 << kBitsPerByte));
+
+  int8_t kind_;
 };


@@ -395,9 +398,12 @@ class HType {
     kUninitialized = 0x1fff  // 0001 1111 1111 1111
   };

+  // Make sure type fits in int16.
+  STATIC_ASSERT(kUninitialized < (1 << (2 * kBitsPerByte)));
+
   explicit HType(Type t) : type_(t) { }

-  Type type_;
+  int16_t type_;
 };


@@ -611,8 +617,8 @@ class HValue: public ZoneObject {
   int id_;

   Representation representation_;
-  SmallPointerList<HValue> uses_;
   HType type_;
+  SmallPointerList<HValue> uses_;
   Range* range_;
   int flags_;



--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to