Make check for writes without remembered set updates less restrictive.
authorkmillikin@chromium.org <kmillikin@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 1 Apr 2010 06:57:31 +0000 (06:57 +0000)
committerkmillikin@chromium.org <kmillikin@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 1 Apr 2010 06:57:31 +0000 (06:57 +0000)
One doesn't have to update remembered set if it already contains a mark for
the given address.

BUG=39766

Original review: http://codereview.chromium.org/1603002

Review URL: http://codereview.chromium.org/1577005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4334 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/objects-inl.h

index 6d7bad7..d363d4d 100644 (file)
@@ -742,7 +742,8 @@ Object* Object::GetProperty(String* key, PropertyAttributes* attributes) {
   } else { \
     ASSERT(mode == SKIP_WRITE_BARRIER); \
     ASSERT(Heap::InNewSpace(object) || \
-           !Heap::InNewSpace(READ_FIELD(object, offset))); \
+           !Heap::InNewSpace(READ_FIELD(object, offset)) || \
+           Page::IsRSetSet(object->address(), offset)); \
   }
 
 #define READ_DOUBLE_FIELD(p, offset) \