From ec6b6c94f5cbaf43a26f579f42e6413d32951833 Mon Sep 17 00:00:00 2001 From: "mikhail.naganov@gmail.com" Date: Mon, 22 Nov 2010 16:09:14 +0000 Subject: [PATCH] Fix windows compilation after r5867. Now linux-friendly. TBR=sgjesse@chromium.org Review URL: http://codereview.chromium.org/5216008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5871 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/profile-generator-inl.h | 11 +++++++++++ src/profile-generator.cc | 6 +++++- src/profile-generator.h | 11 +++++++++-- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/profile-generator-inl.h b/src/profile-generator-inl.h index 71de2d1797..3577219c1d 100644 --- a/src/profile-generator-inl.h +++ b/src/profile-generator-inl.h @@ -122,6 +122,17 @@ CodeEntry* ProfileGenerator::EntryForVMState(StateTag tag) { } +#ifdef WIN32 +inline uint64_t HeapEntry::id() { + return *(reinterpret_cast(&id_)); +} +#else +inline uint64_t HeapEntry::id() { + return id_; +} +#endif + + template void HeapEntriesMap::UpdateEntries(Visitor* visitor) { for (HashMap::Entry* p = entries_.Start(); diff --git a/src/profile-generator.cc b/src/profile-generator.cc index 9f475a4913..8e9f13712e 100644 --- a/src/profile-generator.cc +++ b/src/profile-generator.cc @@ -870,7 +870,11 @@ void HeapEntry::Init(HeapSnapshot* snapshot, type_ = type; painted_ = kUnpainted; name_ = name; +#ifdef WIN32 + *(reinterpret_cast(&id_)) = id; +#else id_ = id; +#endif self_size_ = self_size; retained_size_ = 0; children_count_ = children_count; @@ -952,7 +956,7 @@ void HeapEntry::PaintAllReachable() { void HeapEntry::Print(int max_depth, int indent) { - OS::Print("%6d %6d [%llu] ", self_size(), RetainedSize(false), id_); + OS::Print("%6d %6d [%llu] ", self_size(), RetainedSize(false), id()); if (type() != kString) { OS::Print("%s %.40s\n", TypeAsString(), name_); } else { diff --git a/src/profile-generator.h b/src/profile-generator.h index 7f8ffbdba4..9f956e115a 100644 --- a/src/profile-generator.h +++ b/src/profile-generator.h @@ -526,7 +526,7 @@ class HeapEntry BASE_EMBEDDED { HeapSnapshot* snapshot() { return snapshot_; } Type type() { return static_cast(type_); } const char* name() { return name_; } - uint64_t id() { return id_; } + uint64_t id(); int self_size() { return self_size_; } int retained_size() { return retained_size_; } void add_retained_size(int size) { retained_size_ += size; } @@ -615,8 +615,15 @@ class HeapEntry BASE_EMBEDDED { }; HeapEntry* dominator_; HeapSnapshot* snapshot_; - const char* name_; +#ifdef WIN32 + struct Id { + uint32_t id1_; + uint32_t id2_; + } id_; // This is to avoid extra padding of 64-bit value on MSVC. +#else uint64_t id_; +#endif + const char* name_; // Paints used for exact retained sizes calculation. static const unsigned kUnpainted = 0;