Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2006-2010 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2010 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 333 | 333 |
| 334 | 334 |
| 335 void Heap::CopyBlockToOldSpaceAndUpdateWriteBarrier(Address dst, | 335 void Heap::CopyBlockToOldSpaceAndUpdateWriteBarrier(Address dst, |
| 336 Address src, | 336 Address src, |
| 337 int byte_size) { | 337 int byte_size) { |
| 338 ASSERT(IsAligned(byte_size, kPointerSize)); | 338 ASSERT(IsAligned(byte_size, kPointerSize)); |
| 339 | 339 |
| 340 for (int remaining = byte_size / kPointerSize; | 340 for (int remaining = byte_size / kPointerSize; |
| 341 remaining > 0; | 341 remaining > 0; |
| 342 remaining--) { | 342 remaining--) { |
| 343 Memory::Object_at(dst) = Memory::Object_at(src); | 343 Object* data = Memory::Object_at(src); |
| 344 Memory::Object_at(dst) = data; | |
|
Vyacheslav Egorov (Chromium)
2011/02/02 13:15:47
revert please
Erik Corry
2011/02/03 13:21:17
Done.
| |
| 344 | 345 |
| 345 if (Heap::InNewSpace(Memory::Object_at(dst))) { | 346 if (Heap::InNewSpace(Memory::Object_at(dst))) { |
| 346 StoreBuffer::Mark(dst); | 347 StoreBuffer::Mark(dst); |
| 347 } | 348 } |
| 348 | 349 |
| 349 dst += kPointerSize; | 350 dst += kPointerSize; |
| 350 src += kPointerSize; | 351 src += kPointerSize; |
| 351 } | 352 } |
| 352 } | 353 } |
| 353 | 354 |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 380 | 381 |
| 381 // We use the first word (where the map pointer usually is) of a heap | 382 // We use the first word (where the map pointer usually is) of a heap |
| 382 // object to record the forwarding pointer. A forwarding pointer can | 383 // object to record the forwarding pointer. A forwarding pointer can |
| 383 // point to an old space, the code space, or the to space of the new | 384 // point to an old space, the code space, or the to space of the new |
| 384 // generation. | 385 // generation. |
| 385 MapWord first_word = object->map_word(); | 386 MapWord first_word = object->map_word(); |
| 386 | 387 |
| 387 // If the first word is a forwarding address, the object has already been | 388 // If the first word is a forwarding address, the object has already been |
| 388 // copied. | 389 // copied. |
| 389 if (first_word.IsForwardingAddress()) { | 390 if (first_word.IsForwardingAddress()) { |
| 390 *p = first_word.ToForwardingAddress(); | 391 HeapObject* dest = first_word.ToForwardingAddress(); |
| 392 *p = dest; | |
| 393 Address cell = reinterpret_cast<Address>(p); | |
|
Vyacheslav Egorov (Chromium)
2011/02/02 13:15:47
cell is a bit confusing cause we have cell_space a
Erik Corry
2011/02/03 13:21:17
Done.
| |
| 394 if (Heap::InNewSpace(dest) && !Heap::InNewSpace(cell)) { | |
| 395 StoreBuffer::EnterDirectlyIntoStoreBuffer(cell); | |
| 396 } | |
| 391 return; | 397 return; |
| 392 } | 398 } |
| 393 | 399 |
| 394 // Call the slow part of scavenge object. | 400 // Call the slow part of scavenge object. |
| 395 return ScavengeObjectSlow(p, object); | 401 return ScavengeObjectSlow(p, object); |
| 396 } | 402 } |
| 397 | 403 |
| 398 | 404 |
| 399 bool Heap::CollectGarbage(AllocationSpace space) { | 405 bool Heap::CollectGarbage(AllocationSpace space) { |
| 400 return CollectGarbage(space, SelectGarbageCollector(space)); | 406 return CollectGarbage(space, SelectGarbageCollector(space)); |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 570 | 576 |
| 571 | 577 |
| 572 void ExternalStringTable::ShrinkNewStrings(int position) { | 578 void ExternalStringTable::ShrinkNewStrings(int position) { |
| 573 new_space_strings_.Rewind(position); | 579 new_space_strings_.Rewind(position); |
| 574 Verify(); | 580 Verify(); |
| 575 } | 581 } |
| 576 | 582 |
| 577 } } // namespace v8::internal | 583 } } // namespace v8::internal |
| 578 | 584 |
| 579 #endif // V8_HEAP_INL_H_ | 585 #endif // V8_HEAP_INL_H_ |
| OLD | NEW |