OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 &free_list_old_data_space_); | 69 &free_list_old_data_space_); |
70 collector_->SweepInParallel(heap_->old_pointer_space(), | 70 collector_->SweepInParallel(heap_->old_pointer_space(), |
71 &private_free_list_old_pointer_space_, | 71 &private_free_list_old_pointer_space_, |
72 &free_list_old_pointer_space_); | 72 &free_list_old_pointer_space_); |
73 end_sweeping_semaphore_->Signal(); | 73 end_sweeping_semaphore_->Signal(); |
74 } | 74 } |
75 } | 75 } |
76 | 76 |
77 | 77 |
78 intptr_t SweeperThread::StealMemory(PagedSpace* space) { | 78 intptr_t SweeperThread::StealMemory(PagedSpace* space) { |
79 intptr_t free_bytes = 0; | |
80 if (space->identity() == OLD_POINTER_SPACE) { | 79 if (space->identity() == OLD_POINTER_SPACE) { |
81 free_bytes = space->free_list()->Concatenate(&free_list_old_pointer_space_); | 80 return space->free_list()->Concatenate(&free_list_old_pointer_space_); |
82 space->AddToAccountingStats(free_bytes); | |
83 } else if (space->identity() == OLD_DATA_SPACE) { | 81 } else if (space->identity() == OLD_DATA_SPACE) { |
84 free_bytes = space->free_list()->Concatenate(&free_list_old_data_space_); | 82 return space->free_list()->Concatenate(&free_list_old_data_space_); |
85 space->AddToAccountingStats(free_bytes); | |
86 } | 83 } |
87 return free_bytes; | 84 return 0; |
88 } | 85 } |
89 | 86 |
| 87 |
90 void SweeperThread::Stop() { | 88 void SweeperThread::Stop() { |
91 Release_Store(&stop_thread_, static_cast<AtomicWord>(true)); | 89 Release_Store(&stop_thread_, static_cast<AtomicWord>(true)); |
92 start_sweeping_semaphore_->Signal(); | 90 start_sweeping_semaphore_->Signal(); |
93 stop_semaphore_->Wait(); | 91 stop_semaphore_->Wait(); |
94 } | 92 } |
95 | 93 |
96 | 94 |
97 void SweeperThread::StartSweeping() { | 95 void SweeperThread::StartSweeping() { |
98 start_sweeping_semaphore_->Signal(); | 96 start_sweeping_semaphore_->Signal(); |
99 } | 97 } |
100 | 98 |
101 | 99 |
102 void SweeperThread::WaitForSweeperThread() { | 100 void SweeperThread::WaitForSweeperThread() { |
103 end_sweeping_semaphore_->Wait(); | 101 end_sweeping_semaphore_->Wait(); |
104 } | 102 } |
105 } } // namespace v8::internal | 103 } } // namespace v8::internal |
OLD | NEW |