Revision: 23477
Author:   [email protected]
Date:     Thu Aug 28 07:12:16 2014 UTC
Log:      Sub-minor-key-ify seven HydrogenCodeStubs.

- FastCloneShallowObjectStub
- StringAddStub
- LoadFastElementStub
- StoreFastElementStub
- TransitionElementsKindStub
- ArrayConstructorStubBase
- InternalArrayConstructorStubBase

[email protected]

Review URL: https://codereview.chromium.org/511853002
https://code.google.com/p/v8/source/detail?r=23477

Modified:
 /branches/bleeding_edge/src/code-stubs.h

=======================================
--- /branches/bleeding_edge/src/code-stubs.h    Thu Aug 28 07:02:53 2014 UTC
+++ /branches/bleeding_edge/src/code-stubs.h    Thu Aug 28 07:12:16 2014 UTC
@@ -704,12 +704,13 @@
   static const int kMaximumClonedProperties = 6;

   FastCloneShallowObjectStub(Isolate* isolate, int length)
-      : HydrogenCodeStub(isolate), length_(length) {
-    DCHECK_GE(length_, 0);
-    DCHECK_LE(length_, kMaximumClonedProperties);
+      : HydrogenCodeStub(isolate) {
+    DCHECK_GE(length, 0);
+    DCHECK_LE(length, kMaximumClonedProperties);
+    set_sub_minor_key(LengthBits::encode(length));
   }

-  int length() const { return length_; }
+  int length() const { return LengthBits::decode(sub_minor_key()); }

   virtual Handle<Code> GenerateCode() V8_OVERRIDE;

@@ -717,10 +718,9 @@
       CodeStubInterfaceDescriptor* descriptor) V8_OVERRIDE;

  private:
-  int length_;
+ virtual Major MajorKey() const V8_OVERRIDE { return FastCloneShallowObject; }

- virtual Major MajorKey() const V8_OVERRIDE { return FastCloneShallowObject; }
-  int NotMissMinorKey() const { return length_; }
+  class LengthBits : public BitField<int, 0, 4> {};

   DISALLOW_COPY_AND_ASSIGN(FastCloneShallowObjectStub);
 };
@@ -1301,19 +1301,19 @@

 class StringAddStub V8_FINAL : public HydrogenCodeStub {
  public:
-  StringAddStub(Isolate* isolate,
-                StringAddFlags flags,
+  StringAddStub(Isolate* isolate, StringAddFlags flags,
                 PretenureFlag pretenure_flag)
-      : HydrogenCodeStub(isolate),
-        bit_field_(StringAddFlagsBits::encode(flags) |
-                   PretenureFlagBits::encode(pretenure_flag)) {}
+      : HydrogenCodeStub(isolate) {
+    set_sub_minor_key(StringAddFlagsBits::encode(flags) |
+                      PretenureFlagBits::encode(pretenure_flag));
+  }

   StringAddFlags flags() const {
-    return StringAddFlagsBits::decode(bit_field_);
+    return StringAddFlagsBits::decode(sub_minor_key());
   }

   PretenureFlag pretenure_flag() const {
-    return PretenureFlagBits::decode(bit_field_);
+    return PretenureFlagBits::decode(sub_minor_key());
   }

   virtual Handle<Code> GenerateCode() V8_OVERRIDE;
@@ -1328,12 +1328,10 @@
   static const int kRight = 1;

  private:
+  virtual Major MajorKey() const V8_OVERRIDE { return StringAdd; }
+
   class StringAddFlagsBits: public BitField<StringAddFlags, 0, 2> {};
   class PretenureFlagBits: public BitField<PretenureFlag, 2, 1> {};
-  uint32_t bit_field_;
-
-  virtual Major MajorKey() const V8_OVERRIDE { return StringAdd; }
-  virtual int NotMissMinorKey() const V8_OVERRIDE { return bit_field_; }

   virtual void PrintBaseName(OStream& os) const V8_OVERRIDE;  // NOLINT

@@ -2109,16 +2107,14 @@
   LoadFastElementStub(Isolate* isolate, bool is_js_array,
                       ElementsKind elements_kind)
       : HydrogenCodeStub(isolate) {
-    bit_field_ = ElementsKindBits::encode(elements_kind) |
-        IsJSArrayBits::encode(is_js_array);
+    set_sub_minor_key(ElementsKindBits::encode(elements_kind) |
+                      IsJSArrayBits::encode(is_js_array));
   }

-  bool is_js_array() const {
-    return IsJSArrayBits::decode(bit_field_);
-  }
+ bool is_js_array() const { return IsJSArrayBits::decode(sub_minor_key()); }

   ElementsKind elements_kind() const {
-    return ElementsKindBits::decode(bit_field_);
+    return ElementsKindBits::decode(sub_minor_key());
   }

   virtual Handle<Code> GenerateCode() V8_OVERRIDE;
@@ -2129,12 +2125,10 @@
       CodeStubInterfaceDescriptor* descriptor) V8_OVERRIDE;

  private:
+  virtual Major MajorKey() const V8_OVERRIDE { return LoadElement; }
+
   class ElementsKindBits: public BitField<ElementsKind, 0, 8> {};
   class IsJSArrayBits: public BitField<bool, 8, 1> {};
-  uint32_t bit_field_;
-
-  virtual Major MajorKey() const V8_OVERRIDE { return LoadElement; }
-  int NotMissMinorKey() const { return bit_field_; }

   DISALLOW_COPY_AND_ASSIGN(LoadFastElementStub);
 };
@@ -2145,21 +2139,19 @@
   StoreFastElementStub(Isolate* isolate, bool is_js_array,
ElementsKind elements_kind, KeyedAccessStoreMode mode)
       : HydrogenCodeStub(isolate) {
-    bit_field_ = ElementsKindBits::encode(elements_kind) |
-        IsJSArrayBits::encode(is_js_array) |
-        StoreModeBits::encode(mode);
+    set_sub_minor_key(ElementsKindBits::encode(elements_kind) |
+                      IsJSArrayBits::encode(is_js_array) |
+                      StoreModeBits::encode(mode));
   }

-  bool is_js_array() const {
-    return IsJSArrayBits::decode(bit_field_);
-  }
+ bool is_js_array() const { return IsJSArrayBits::decode(sub_minor_key()); }

   ElementsKind elements_kind() const {
-    return ElementsKindBits::decode(bit_field_);
+    return ElementsKindBits::decode(sub_minor_key());
   }

   KeyedAccessStoreMode store_mode() const {
-    return StoreModeBits::decode(bit_field_);
+    return StoreModeBits::decode(sub_minor_key());
   }

   virtual Handle<Code> GenerateCode() V8_OVERRIDE;
@@ -2168,13 +2160,11 @@
       CodeStubInterfaceDescriptor* descriptor) V8_OVERRIDE;

  private:
+  virtual Major MajorKey() const V8_OVERRIDE { return StoreElement; }
+
   class ElementsKindBits: public BitField<ElementsKind,      0, 8> {};
   class StoreModeBits: public BitField<KeyedAccessStoreMode, 8, 4> {};
   class IsJSArrayBits: public BitField<bool,                12, 1> {};
-  uint32_t bit_field_;
-
-  virtual Major MajorKey() const V8_OVERRIDE { return StoreElement; }
-  int NotMissMinorKey() const { return bit_field_; }

   DISALLOW_COPY_AND_ASSIGN(StoreFastElementStub);
 };
@@ -2186,22 +2176,18 @@
                              ElementsKind from_kind,
                              ElementsKind to_kind,
bool is_js_array) : HydrogenCodeStub(isolate) {
-    bit_field_ = FromKindBits::encode(from_kind) |
-                 ToKindBits::encode(to_kind) |
-                 IsJSArrayBits::encode(is_js_array);
+    set_sub_minor_key(FromKindBits::encode(from_kind) |
+                      ToKindBits::encode(to_kind) |
+                      IsJSArrayBits::encode(is_js_array));
   }

   ElementsKind from_kind() const {
-    return FromKindBits::decode(bit_field_);
+    return FromKindBits::decode(sub_minor_key());
   }

-  ElementsKind to_kind() const {
-    return ToKindBits::decode(bit_field_);
-  }
+ ElementsKind to_kind() const { return ToKindBits::decode(sub_minor_key()); }

-  bool is_js_array() const {
-    return IsJSArrayBits::decode(bit_field_);
-  }
+ bool is_js_array() const { return IsJSArrayBits::decode(sub_minor_key()); }

   virtual Handle<Code> GenerateCode() V8_OVERRIDE;

@@ -2209,13 +2195,11 @@
       CodeStubInterfaceDescriptor* descriptor) V8_OVERRIDE;

  private:
+ virtual Major MajorKey() const V8_OVERRIDE { return TransitionElementsKind; }
+
   class FromKindBits: public BitField<ElementsKind, 8, 8> {};
   class ToKindBits: public BitField<ElementsKind, 0, 8> {};
   class IsJSArrayBits: public BitField<bool, 16, 1> {};
-  uint32_t bit_field_;
-
- virtual Major MajorKey() const V8_OVERRIDE { return TransitionElementsKind; }
-  int NotMissMinorKey() const { return bit_field_; }

   DISALLOW_COPY_AND_ASSIGN(TransitionElementsKindStub);
 };
@@ -2232,16 +2216,16 @@
     // for an ElementsKind and the desired usage of the stub.
     DCHECK(override_mode != DISABLE_ALLOCATION_SITES ||
            AllocationSite::GetMode(kind) == TRACK_ALLOCATION_SITE);
-    bit_field_ = ElementsKindBits::encode(kind) |
-        AllocationSiteOverrideModeBits::encode(override_mode);
+    set_sub_minor_key(ElementsKindBits::encode(kind) |
+ AllocationSiteOverrideModeBits::encode(override_mode));
   }

   ElementsKind elements_kind() const {
-    return ElementsKindBits::decode(bit_field_);
+    return ElementsKindBits::decode(sub_minor_key());
   }

   AllocationSiteOverrideMode override_mode() const {
-    return AllocationSiteOverrideModeBits::decode(bit_field_);
+    return AllocationSiteOverrideModeBits::decode(sub_minor_key());
   }

   static void GenerateStubsAheadOfTime(Isolate* isolate);
@@ -2255,15 +2239,12 @@
   OStream& BasePrintName(OStream& os, const char* name) const;  // NOLINT

  private:
-  int NotMissMinorKey() const { return bit_field_; }
-
   // Ensure data fits within available bits.
   STATIC_ASSERT(LAST_ALLOCATION_SITE_OVERRIDE_MODE == 1);

   class ElementsKindBits: public BitField<ElementsKind, 0, 8> {};
   class AllocationSiteOverrideModeBits: public
       BitField<AllocationSiteOverrideMode, 8, 1> {};  // NOLINT
-  uint32_t bit_field_;

   DISALLOW_COPY_AND_ASSIGN(ArrayConstructorStubBase);
 };
@@ -2354,7 +2335,7 @@
  public:
   InternalArrayConstructorStubBase(Isolate* isolate, ElementsKind kind)
       : HydrogenCodeStub(isolate) {
-    kind_ = kind;
+    set_sub_minor_key(ElementsKindBits::encode(kind));
   }

   static void GenerateStubsAheadOfTime(Isolate* isolate);
@@ -2363,12 +2344,12 @@
   // Parameters accessed via CodeStubGraphBuilder::GetParameter()
   static const int kConstructor = 0;

-  ElementsKind elements_kind() const { return kind_; }
+  ElementsKind elements_kind() const {
+    return ElementsKindBits::decode(sub_minor_key());
+  }

  private:
-  int NotMissMinorKey() const { return kind_; }
-
-  ElementsKind kind_;
+  class ElementsKindBits : public BitField<ElementsKind, 0, 8> {};

   DISALLOW_COPY_AND_ASSIGN(InternalArrayConstructorStubBase);
 };

--
--
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/d/optout.

Reply via email to