Index: src/heap-snapshot-generator.h |
diff --git a/src/heap-snapshot-generator.h b/src/heap-snapshot-generator.h |
index 646d497085d19c396d97544054d02371dc0af5bf..fb4387617d529ed1c65681826bf89701e2285733 100644 |
--- a/src/heap-snapshot-generator.h |
+++ b/src/heap-snapshot-generator.h |
@@ -28,22 +28,18 @@ class HeapGraphEdge BASE_EMBEDDED { |
kWeak = v8::HeapGraphEdge::kWeak |
}; |
- HeapGraphEdge() { } |
HeapGraphEdge(Type type, const char* name, int from, int to); |
HeapGraphEdge(Type type, int index, int from, int to); |
void ReplaceToIndexWithEntry(HeapSnapshot* snapshot); |
- Type type() const { return static_cast<Type>(type_); } |
+ Type type() const { return TypeField::decode(bit_field_); } |
int index() const { |
- DCHECK(type_ == kElement || type_ == kHidden); |
+ DCHECK(type() == kElement || type() == kHidden); |
return index_; |
} |
const char* name() const { |
- DCHECK(type_ == kContextVariable |
- || type_ == kProperty |
- || type_ == kInternal |
- || type_ == kShortcut |
- || type_ == kWeak); |
+ DCHECK(type() == kContextVariable || type() == kProperty || |
+ type() == kInternal || type() == kShortcut || type() == kWeak); |
return name_; |
} |
INLINE(HeapEntry* from() const); |
@@ -51,9 +47,11 @@ class HeapGraphEdge BASE_EMBEDDED { |
private: |
INLINE(HeapSnapshot* snapshot() const); |
+ int from_index() const { return FromIndexField::decode(bit_field_); } |
- unsigned type_ : 3; |
- int from_index_ : 29; |
+ class TypeField : public BitField<Type, 0, 3> {}; |
+ class FromIndexField : public BitField<int, 3, 29> {}; |
+ uint32_t bit_field_; |
union { |
// During entries population |to_index_| is used for storing the index, |
// afterwards it is replaced with a pointer to the entry. |