OLD | NEW |
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 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 499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
510 // Heap object iterator in new/old/map spaces. | 510 // Heap object iterator in new/old/map spaces. |
511 // | 511 // |
512 // A HeapObjectIterator iterates objects from a given address to the | 512 // A HeapObjectIterator iterates objects from a given address to the |
513 // top of a space. The given address must be below the current | 513 // top of a space. The given address must be below the current |
514 // allocation pointer (space top). There are some caveats. | 514 // allocation pointer (space top). There are some caveats. |
515 // | 515 // |
516 // (1) If the space top changes upward during iteration (because of | 516 // (1) If the space top changes upward during iteration (because of |
517 // allocating new objects), the iterator does not iterate objects | 517 // allocating new objects), the iterator does not iterate objects |
518 // above the original space top. The caller must create a new | 518 // above the original space top. The caller must create a new |
519 // iterator starting from the old top in order to visit these new | 519 // iterator starting from the old top in order to visit these new |
520 // objects. Heap::Scavenge() is such an example. | 520 // objects. |
521 // | 521 // |
522 // (2) If new objects are allocated below the original allocation top | 522 // (2) If new objects are allocated below the original allocation top |
523 // (e.g., free-list allocation in paged spaces), the new objects | 523 // (e.g., free-list allocation in paged spaces), the new objects |
524 // may or may not be iterated depending on their position with | 524 // may or may not be iterated depending on their position with |
525 // respect to the current point of iteration. | 525 // respect to the current point of iteration. |
526 // | 526 // |
527 // (3) The space top should not change downward during iteration, | 527 // (3) The space top should not change downward during iteration, |
528 // otherwise the iterator will return not-necessarily-valid | 528 // otherwise the iterator will return not-necessarily-valid |
529 // objects. | 529 // objects. |
530 | 530 |
(...skipping 1197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1728 | 1728 |
1729 private: | 1729 private: |
1730 LargeObjectChunk* current_; | 1730 LargeObjectChunk* current_; |
1731 HeapObjectCallback size_func_; | 1731 HeapObjectCallback size_func_; |
1732 }; | 1732 }; |
1733 | 1733 |
1734 | 1734 |
1735 } } // namespace v8::internal | 1735 } } // namespace v8::internal |
1736 | 1736 |
1737 #endif // V8_SPACES_H_ | 1737 #endif // V8_SPACES_H_ |
OLD | NEW |