Index: src/serialize.cc |
diff --git a/src/serialize.cc b/src/serialize.cc |
index e15c00383505f574daeee0fe80b7f9e6c51688b6..c1ec81d29d7f4cf6825855be4fb0184b93a0df47 100644 |
--- a/src/serialize.cc |
+++ b/src/serialize.cc |
@@ -78,8 +78,8 @@ const int kPageAndOffsetMask = (1 << kPageAndOffsetBits) - 1; |
static inline AllocationSpace GetSpace(Address addr) { |
- const int encoded = reinterpret_cast<int>(addr); |
- int space_number = ((encoded >> kSpaceShift) & kSpaceMask); |
+ const intptr_t encoded = reinterpret_cast<intptr_t>(addr); |
+ int space_number = (static_cast<int>(encoded >> kSpaceShift) & kSpaceMask); |
if (space_number == kLOSpaceExecutable) space_number = LO_SPACE; |
else if (space_number == kLOSpacePointer) space_number = LO_SPACE; |
return static_cast<AllocationSpace>(space_number); |
@@ -87,43 +87,45 @@ static inline AllocationSpace GetSpace(Address addr) { |
static inline bool IsLargeExecutableObject(Address addr) { |
- const int encoded = reinterpret_cast<int>(addr); |
- const int space_number = ((encoded >> kSpaceShift) & kSpaceMask); |
- if (space_number == kLOSpaceExecutable) return true; |
- return false; |
+ const intptr_t encoded = reinterpret_cast<intptr_t>(addr); |
+ const int space_number = |
+ (static_cast<int>(encoded >> kSpaceShift) & kSpaceMask); |
+ return (space_number == kLOSpaceExecutable); |
} |
static inline bool IsLargeFixedArray(Address addr) { |
- const int encoded = reinterpret_cast<int>(addr); |
- const int space_number = ((encoded >> kSpaceShift) & kSpaceMask); |
- if (space_number == kLOSpacePointer) return true; |
- return false; |
+ const intptr_t encoded = reinterpret_cast<intptr_t>(addr); |
+ const int space_number = |
+ (static_cast<int>(encoded >> kSpaceShift) & kSpaceMask); |
+ return (space_number == kLOSpacePointer); |
} |
static inline int PageIndex(Address addr) { |
- const int encoded = reinterpret_cast<int>(addr); |
- return (encoded >> kPageShift) & kPageMask; |
+ const intptr_t encoded = reinterpret_cast<intptr_t>(addr); |
+ return static_cast<int>(encoded >> kPageShift) & kPageMask; |
} |
static inline int PageOffset(Address addr) { |
- const int encoded = reinterpret_cast<int>(addr); |
- return ((encoded >> kOffsetShift) & kOffsetMask) << kObjectAlignmentBits; |
+ const intptr_t encoded = reinterpret_cast<intptr_t>(addr); |
+ const int offset = static_cast<int>(encoded >> kOffsetShift) & kOffsetMask; |
+ return offset << kObjectAlignmentBits; |
} |
static inline int NewSpaceOffset(Address addr) { |
- const int encoded = reinterpret_cast<int>(addr); |
- return ((encoded >> kPageAndOffsetShift) & kPageAndOffsetMask) << |
- kObjectAlignmentBits; |
+ const intptr_t encoded = reinterpret_cast<intptr_t>(addr); |
+ const int page_offset = |
+ static_cast<int>(encoded >> kPageAndOffsetShift) & kPageAndOffsetMask; |
+ return page_offset << kObjectAlignmentBits; |
} |
static inline int LargeObjectIndex(Address addr) { |
- const int encoded = reinterpret_cast<int>(addr); |
- return (encoded >> kPageAndOffsetShift) & kPageAndOffsetMask; |
+ const intptr_t encoded = reinterpret_cast<intptr_t>(addr); |
+ return static_cast<int>(encoded >> kPageAndOffsetShift) & kPageAndOffsetMask; |
} |
@@ -728,7 +730,8 @@ int ExternalReferenceEncoder::IndexOf(Address key) const { |
if (key == NULL) return -1; |
HashMap::Entry* entry = |
const_cast<HashMap &>(encodings_).Lookup(key, Hash(key), false); |
- return entry == NULL ? -1 : reinterpret_cast<int>(entry->value); |
+ return entry == NULL ? -1 : |
Kasper Lund
2009/05/07 11:48:54
I would put ? and : on separate lines like this:
|
+ static_cast<int>(reinterpret_cast<intptr_t>(entry->value)); |
} |
@@ -794,6 +797,10 @@ class SnapshotWriter { |
InsertInt(i, len_); |
} |
+ void PutAddress(Address p) { |
+ PutBytes(reinterpret_cast<byte*>(&p), sizeof(p)); |
+ } |
+ |
void PutBytes(const byte* a, int size) { |
InsertBytes(a, len_, size); |
} |
@@ -914,7 +921,8 @@ class ReferenceUpdater: public ObjectVisitor { |
// Helper functions for a map of encoded heap object addresses. |
static uint32_t HeapObjectHash(HeapObject* key) { |
- return reinterpret_cast<uint32_t>(key) >> 2; |
+ uint32_t low32bits = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(key)); |
+ return low32bits >> 2; |
} |
@@ -1153,7 +1161,7 @@ void Serializer::PutContextStack() { |
void Serializer::PutEncodedAddress(Address addr) { |
writer_->PutC('P'); |
- writer_->PutInt(reinterpret_cast<int>(addr)); |
+ writer_->PutAddress(addr); |
} |
@@ -1336,7 +1344,7 @@ void Deserializer::VisitPointers(Object** start, Object** end) { |
*p = GetObject(); // embedded object |
} else { |
ASSERT(c == 'P'); // pointer to previously serialized object |
- *p = Resolve(reinterpret_cast<Address>(reader_.GetInt())); |
+ *p = Resolve(reader_.GetAddress()); |
} |
} else { |
// A pointer internal to a HeapObject that we've already |
@@ -1350,7 +1358,7 @@ void Deserializer::VisitPointers(Object** start, Object** end) { |
void Deserializer::VisitExternalReferences(Address* start, Address* end) { |
for (Address* p = start; p < end; ++p) { |
- uint32_t code = reinterpret_cast<uint32_t>(*p); |
+ uint32_t code = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(*p)); |
*p = reference_decoder_->Decode(code); |
} |
} |
@@ -1476,7 +1484,7 @@ void Deserializer::GetContextStack() { |
Address Deserializer::GetEncodedAddress() { |
reader_.ExpectC('P'); |
- return reinterpret_cast<Address>(reader_.GetInt()); |
+ return reader_.GetAddress(); |
} |