Index: src/heap/spaces.h |
diff --git a/src/heap/spaces.h b/src/heap/spaces.h |
index 67e9aae114326e8a57f55751115c063882b30712..4b740a54a5afd5dd27cc2ec9da8c8e73cd310ac3 100644 |
--- a/src/heap/spaces.h |
+++ b/src/heap/spaces.h |
@@ -1643,51 +1643,40 @@ class PageIterator BASE_EMBEDDED { |
// space. |
class AllocationInfo { |
public: |
- AllocationInfo() : top_(nullptr), limit_(nullptr) {} |
- AllocationInfo(Address top, Address limit) : top_(top), limit_(limit) {} |
+ AllocationInfo() { Reset(nullptr, nullptr); } |
+ AllocationInfo(Address top, Address limit) { Reset(top, limit); } |
void Reset(Address top, Address limit) { |
set_top(top); |
set_limit(limit); |
} |
- INLINE(void set_top(Address top)) { |
- SLOW_DCHECK(top == NULL || |
- (reinterpret_cast<intptr_t>(top) & kHeapObjectTagMask) == 0); |
- top_ = top; |
+ inline void set_top(Address top) { |
+ SLOW_DCHECK((reinterpret_cast<intptr_t>(top) & kHeapObjectTagMask) == 0); |
+ top_ = reinterpret_cast<intptr_t>(top) + kHeapObjectTag; |
} |
- INLINE(Address top()) const { |
- SLOW_DCHECK(top_ == NULL || |
- (reinterpret_cast<intptr_t>(top_) & kHeapObjectTagMask) == 0); |
- return top_; |
+ inline Address top() const { |
+ SLOW_DCHECK((reinterpret_cast<intptr_t>(top_) & kHeapObjectTagMask) == |
+ kHeapObjectTag); |
+ return reinterpret_cast<Address>(top_ - kHeapObjectTag); |
} |
- Address* top_address() { return &top_; } |
+ Address* top_address() { return reinterpret_cast<Address*>(&top_); } |
- INLINE(void set_limit(Address limit)) { |
- limit_ = limit; |
+ inline void set_limit(Address limit) { |
+ limit_ = reinterpret_cast<intptr_t>(limit); |
} |
- INLINE(Address limit()) const { |
- return limit_; |
- } |
- |
- Address* limit_address() { return &limit_; } |
+ inline Address limit() const { return reinterpret_cast<Address>(limit_); } |
-#ifdef DEBUG |
- bool VerifyPagedAllocation() { |
- return (Page::FromAllocationAreaAddress(top_) == |
- Page::FromAllocationAreaAddress(limit_)) && |
- (top_ <= limit_); |
- } |
-#endif |
+ Address* limit_address() { return reinterpret_cast<Address*>(&limit_); } |
private: |
- // Current allocation top. |
- Address top_; |
+ // Current tagged allocation top. |
+ intptr_t top_; |
// Current allocation limit. |
- Address limit_; |
+ intptr_t limit_; |
}; |