Revision: 9017
Author:   [email protected]
Date:     Thu Aug 25 06:35:15 2011
Log: Two tiny refactorings: Removed a bit of copy-n-paste. Moved LargeObjectChunk::Free from header to implementation, it does a syscall, anyway.
Review URL: http://codereview.chromium.org/7744023
http://code.google.com/p/v8/source/detail?r=9017

Modified:
 /branches/bleeding_edge/src/spaces-inl.h
 /branches/bleeding_edge/src/spaces.cc
 /branches/bleeding_edge/src/spaces.h

=======================================
--- /branches/bleeding_edge/src/spaces-inl.h    Thu Aug 25 03:55:44 2011
+++ /branches/bleeding_edge/src/spaces-inl.h    Thu Aug 25 06:35:15 2011
@@ -432,23 +432,6 @@
   return Failure::RetryAfterGC(identity());
 }

-
-// -----------------------------------------------------------------------------
-// LargeObjectChunk
-
-Address LargeObjectChunk::GetStartAddress() {
-  // Round the chunk address up to the nearest page-aligned address
-  // and return the heap object in that page.
-  Page* page = Page::FromAddress(RoundUp(address(), Page::kPageSize));
-  return page->ObjectAreaStart();
-}
-
-
-void LargeObjectChunk::Free(Executability executable) {
-  Isolate* isolate =
- Page::FromAddress(RoundUp(address(), Page::kPageSize))->heap_->isolate(); - isolate->memory_allocator()->FreeRawMemory(address(), size(), executable);
-}

// -----------------------------------------------------------------------------
 // NewSpace
=======================================
--- /branches/bleeding_edge/src/spaces.cc       Thu Aug 25 03:55:44 2011
+++ /branches/bleeding_edge/src/spaces.cc       Thu Aug 25 06:35:15 2011
@@ -2722,10 +2722,15 @@

   LargeObjectChunk* chunk = reinterpret_cast<LargeObjectChunk*>(mem);
   chunk->size_ = size;
- Page* page = Page::FromAddress(RoundUp(chunk->address(), Page::kPageSize));
-  page->heap_ = isolate->heap();
+  chunk->GetPage()->heap_ = isolate->heap();
   return chunk;
 }
+
+
+void LargeObjectChunk::Free(Executability executable) {
+  Isolate* isolate = GetPage()->heap_->isolate();
+ isolate->memory_allocator()->FreeRawMemory(address(), size(), executable);
+}


 int LargeObjectChunk::ChunkSizeFor(int size_in_bytes) {
@@ -2761,8 +2766,7 @@
     LargeObjectChunk* chunk = first_chunk_;
     first_chunk_ = first_chunk_->next();
LOG(heap()->isolate(), DeleteEvent("LargeObjectChunk", chunk->address())); - Page* page = Page::FromAddress(RoundUp(chunk->address(), Page::kPageSize));
-    Executability executable = page->PageExecutability();
+    Executability executable = chunk->GetPage()->PageExecutability();
     ObjectSpace space = kObjectSpaceLoSpace;
     if (executable == EXECUTABLE) space = kObjectSpaceCodeSpace;
     size_t size = chunk->size();
@@ -2805,7 +2809,7 @@
   first_chunk_ = chunk;

   // Initialize page header.
- Page* page = Page::FromAddress(RoundUp(chunk->address(), Page::kPageSize));
+  Page* page = chunk->GetPage();
   Address object_address = page->ObjectAreaStart();

   // Clear the low order bit of the second word in the page to flag it as a
@@ -2943,9 +2947,7 @@
       previous = current;
       current = current->next();
     } else {
-      Page* page = Page::FromAddress(RoundUp(current->address(),
-                                     Page::kPageSize));
-      Executability executable = page->PageExecutability();
+      Executability executable = current->GetPage()->PageExecutability();
       Address chunk_address = current->address();
       size_t chunk_size = current->size();

=======================================
--- /branches/bleeding_edge/src/spaces.h        Thu Aug 25 03:55:44 2011
+++ /branches/bleeding_edge/src/spaces.h        Thu Aug 25 06:35:15 2011
@@ -2144,7 +2144,7 @@
static LargeObjectChunk* New(int size_in_bytes, Executability executable);

   // Free the memory associated with the chunk.
-  inline void Free(Executability executable);
+  void Free(Executability executable);

   // Interpret a raw address as a large object chunk.
   static LargeObjectChunk* FromAddress(Address address) {
@@ -2153,6 +2153,10 @@

   // Returns the address of this chunk.
   Address address() { return reinterpret_cast<Address>(this); }
+
+  Page* GetPage() {
+    return Page::FromAddress(RoundUp(address(), Page::kPageSize));
+  }

   // Accessors for the fields of the chunk.
   LargeObjectChunk* next() { return next_; }
@@ -2160,7 +2164,7 @@
   size_t size() { return size_ & ~Page::kPageFlagMask; }

   // Compute the start address in the chunk.
-  inline Address GetStartAddress();
+  Address GetStartAddress() { return GetPage()->ObjectAreaStart(); }

   // Returns the object in this chunk.
HeapObject* GetObject() { return HeapObject::FromAddress(GetStartAddress()); }

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to