Yeah, i realized that after i press the send button. Sorry for the trouble.
Thanks, Zaheer On Wed, Jun 16, 2010 at 1:58 PM, Vyacheslav Egorov <[email protected]> wrote: > Hi Zaheer, > Please take a look inside RecordWrites. It checks whether address points to > the new space and does _nothing_ in this case. > Removing this check is possible (allocator knows which space was used for > allocation) but I don't thinks it will bring any serious speedup. > -- > Vyacheslav Egorov > > > On Wed, Jun 16, 2010 at 8:05 AM, zaheer ahmad <[email protected]> wrote: >> >> In the following code, looks like the if case can be optimized to call >> RecordWrites only if the clone is allocated in old space? >> >> Thanks >> Zaheer >> >> // If we're forced to always allocate, we use the general allocation >> // functions which may leave us with an object in old space. >> if (always_allocate()) { >> clone = AllocateRaw(object_size, NEW_SPACE, OLD_POINTER_SPACE); >> if (clone->IsFailure()) return clone; >> Address clone_address = HeapObject::cast(clone)->address(); >> CopyBlock(clone_address, >> source->address(), >> object_size); >> // Update write barrier for all fields that lie beyond the header. >> RecordWrites(clone_address, >> JSObject::kHeaderSize, >> (object_size - JSObject::kHeaderSize) / kPointerSize); >> } else { >> clone = new_space_.AllocateRaw(object_size); >> if (clone->IsFailure()) return clone; >> ASSERT(Heap::InNewSpace(clone)); >> // Since we know the clone is allocated in new space, we can copy >> // the contents without worrying about updating the write barrier. >> CopyBlock(HeapObject::cast(clone)->address(), >> source->address(), >> object_size); >> } >> >> -- >> v8-dev mailing list >> [email protected] >> http://groups.google.com/group/v8-dev > > -- > v8-dev mailing list > [email protected] > http://groups.google.com/group/v8-dev -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
