Reviewers: mstarzinger,
Description:
Rename failure tag to page owner tag and add proper description.
BUG=
Please review this at https://codereview.chromium.org/420293003/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+16, -12 lines):
M src/globals.h
M src/spaces.h
Index: src/globals.h
diff --git a/src/globals.h b/src/globals.h
index
bddd4ef056c0538447bc7982d046dc789b142755..b4baabc6943aaf167862dc7b6539f921e394f303
100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -216,11 +216,15 @@ const int kCodeAlignmentBits = 5;
const intptr_t kCodeAlignment = 1 << kCodeAlignmentBits;
const intptr_t kCodeAlignmentMask = kCodeAlignment - 1;
-// Tag information for Failure.
-// TODO(yangguo): remove this from space owner calculation.
-const int kFailureTag = 3;
-const int kFailureTagSize = 2;
-const intptr_t kFailureTagMask = (1 << kFailureTagSize) - 1;
+// The owner field of a page is tagged with the page header tag. We need
that
+// to find out if a slot is part of a large object, i.e., if we mask out
the
+// lower 0xfffff bits (1M pages), go to the owner offset, and see that this
+// field is tagged with the page header tag, we can just look up the owner.
+// Otherwise, we know that we are somewhere (not within the first 1M) in a
+// large object.
+const int kPageHeaderTag = 3;
+const int kPageHeaderTagSize = 2;
+const intptr_t kPageHeaderTagMask = (1 << kPageHeaderTagSize) - 1;
// Zap-value: The value used for zapping dead objects.
Index: src/spaces.h
diff --git a/src/spaces.h b/src/spaces.h
index
310320485777ca1c1aab01ead993350cc2c18304..3fe71b2c574bb617d0155f3459f32b5999226d94
100644
--- a/src/spaces.h
+++ b/src/spaces.h
@@ -312,20 +312,20 @@ class MemoryChunk {
}
Space* owner() const {
- if ((reinterpret_cast<intptr_t>(owner_) & kFailureTagMask) ==
- kFailureTag) {
+ if ((reinterpret_cast<intptr_t>(owner_) & kPageHeaderTagMask) ==
+ kPageHeaderTag) {
return reinterpret_cast<Space*>(reinterpret_cast<intptr_t>(owner_) -
- kFailureTag);
+ kPageHeaderTag);
} else {
return NULL;
}
}
void set_owner(Space* space) {
- ASSERT((reinterpret_cast<intptr_t>(space) & kFailureTagMask) == 0);
- owner_ = reinterpret_cast<Address>(space) + kFailureTag;
- ASSERT((reinterpret_cast<intptr_t>(owner_) & kFailureTagMask) ==
- kFailureTag);
+ ASSERT((reinterpret_cast<intptr_t>(space) & kPageHeaderTagMask) == 0);
+ owner_ = reinterpret_cast<Address>(space) + kPageHeaderTag;
+ ASSERT((reinterpret_cast<intptr_t>(owner_) & kPageHeaderTagMask) ==
+ kPageHeaderTag);
}
base::VirtualMemory* reserved_memory() {
--
--
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.