| 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 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 // ConfigureHeap (survived_since_last_expansion_, external_allocation_limit_) | 79 // ConfigureHeap (survived_since_last_expansion_, external_allocation_limit_) |
| 80 // Will be 4 * reserved_semispace_size_ to ensure that young | 80 // Will be 4 * reserved_semispace_size_ to ensure that young |
| 81 // generation can be aligned to its size. | 81 // generation can be aligned to its size. |
| 82 survived_since_last_expansion_(0), | 82 survived_since_last_expansion_(0), |
| 83 sweep_generation_(0), | 83 sweep_generation_(0), |
| 84 always_allocate_scope_depth_(0), | 84 always_allocate_scope_depth_(0), |
| 85 linear_allocation_scope_depth_(0), | 85 linear_allocation_scope_depth_(0), |
| 86 contexts_disposed_(0), | 86 contexts_disposed_(0), |
| 87 global_ic_age_(0), | 87 global_ic_age_(0), |
| 88 flush_monomorphic_ics_(false), | 88 flush_monomorphic_ics_(false), |
| 89 allocation_mementos_found_on_scavenge_(0), | 89 allocation_mementos_found_(0), |
| 90 scan_on_scavenge_pages_(0), | 90 scan_on_scavenge_pages_(0), |
| 91 new_space_(this), | 91 new_space_(this), |
| 92 old_pointer_space_(NULL), | 92 old_pointer_space_(NULL), |
| 93 old_data_space_(NULL), | 93 old_data_space_(NULL), |
| 94 code_space_(NULL), | 94 code_space_(NULL), |
| 95 map_space_(NULL), | 95 map_space_(NULL), |
| 96 cell_space_(NULL), | 96 cell_space_(NULL), |
| 97 property_cell_space_(NULL), | 97 property_cell_space_(NULL), |
| 98 lo_space_(NULL), | 98 lo_space_(NULL), |
| 99 gc_state_(NOT_IN_GC), | 99 gc_state_(NOT_IN_GC), |
| (...skipping 1222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1322 } | 1322 } |
| 1323 | 1323 |
| 1324 private: | 1324 private: |
| 1325 Heap* heap_; | 1325 Heap* heap_; |
| 1326 }; | 1326 }; |
| 1327 | 1327 |
| 1328 | 1328 |
| 1329 void Heap::Scavenge() { | 1329 void Heap::Scavenge() { |
| 1330 RelocationLock relocation_lock(this); | 1330 RelocationLock relocation_lock(this); |
| 1331 | 1331 |
| 1332 allocation_mementos_found_on_scavenge_ = 0; | 1332 allocation_mementos_found_ = 0; |
| 1333 | 1333 |
| 1334 #ifdef VERIFY_HEAP | 1334 #ifdef VERIFY_HEAP |
| 1335 if (FLAG_verify_heap) VerifyNonPointerSpacePointers(this); | 1335 if (FLAG_verify_heap) VerifyNonPointerSpacePointers(this); |
| 1336 #endif | 1336 #endif |
| 1337 | 1337 |
| 1338 gc_state_ = SCAVENGE; | 1338 gc_state_ = SCAVENGE; |
| 1339 | 1339 |
| 1340 // Implements Cheney's copying algorithm | 1340 // Implements Cheney's copying algorithm |
| 1341 LOG(isolate_, ResourceEvent("scavenge", "begin")); | 1341 LOG(isolate_, ResourceEvent("scavenge", "begin")); |
| 1342 | 1342 |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1472 // Update how much has survived scavenge. | 1472 // Update how much has survived scavenge. |
| 1473 IncrementYoungSurvivorsCounter(static_cast<int>( | 1473 IncrementYoungSurvivorsCounter(static_cast<int>( |
| 1474 (PromotedSpaceSizeOfObjects() - survived_watermark) + new_space_.Size())); | 1474 (PromotedSpaceSizeOfObjects() - survived_watermark) + new_space_.Size())); |
| 1475 | 1475 |
| 1476 LOG(isolate_, ResourceEvent("scavenge", "end")); | 1476 LOG(isolate_, ResourceEvent("scavenge", "end")); |
| 1477 | 1477 |
| 1478 gc_state_ = NOT_IN_GC; | 1478 gc_state_ = NOT_IN_GC; |
| 1479 | 1479 |
| 1480 scavenges_since_last_idle_round_++; | 1480 scavenges_since_last_idle_round_++; |
| 1481 | 1481 |
| 1482 if (FLAG_trace_track_allocation_sites && | 1482 if (FLAG_trace_track_allocation_sites && allocation_mementos_found_ > 0) { |
| 1483 allocation_mementos_found_on_scavenge_ > 0) { | |
| 1484 PrintF("AllocationMementos found during scavenge = %d\n", | 1483 PrintF("AllocationMementos found during scavenge = %d\n", |
| 1485 allocation_mementos_found_on_scavenge_); | 1484 allocation_mementos_found_); |
| 1486 } | 1485 } |
| 1487 } | 1486 } |
| 1488 | 1487 |
| 1489 | 1488 |
| 1490 String* Heap::UpdateNewSpaceReferenceInExternalStringTableEntry(Heap* heap, | 1489 String* Heap::UpdateNewSpaceReferenceInExternalStringTableEntry(Heap* heap, |
| 1491 Object** p) { | 1490 Object** p) { |
| 1492 MapWord first_word = HeapObject::cast(*p)->map_word(); | 1491 MapWord first_word = HeapObject::cast(*p)->map_word(); |
| 1493 | 1492 |
| 1494 if (!first_word.IsForwardingAddress()) { | 1493 if (!first_word.IsForwardingAddress()) { |
| 1495 // Unreachable external string can be finalized. | 1494 // Unreachable external string can be finalized. |
| (...skipping 6375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7871 if (FLAG_concurrent_recompilation) { | 7870 if (FLAG_concurrent_recompilation) { |
| 7872 heap_->relocation_mutex_->Lock(); | 7871 heap_->relocation_mutex_->Lock(); |
| 7873 #ifdef DEBUG | 7872 #ifdef DEBUG |
| 7874 heap_->relocation_mutex_locked_by_optimizer_thread_ = | 7873 heap_->relocation_mutex_locked_by_optimizer_thread_ = |
| 7875 heap_->isolate()->optimizing_compiler_thread()->IsOptimizerThread(); | 7874 heap_->isolate()->optimizing_compiler_thread()->IsOptimizerThread(); |
| 7876 #endif // DEBUG | 7875 #endif // DEBUG |
| 7877 } | 7876 } |
| 7878 } | 7877 } |
| 7879 | 7878 |
| 7880 } } // namespace v8::internal | 7879 } } // namespace v8::internal |
| OLD | NEW |