Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(292)

Side by Side Diff: src/mark-compact.cc

Issue 358363002: Move platform abstraction to base library (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: updates Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/base/atomicops.h" 7 #include "src/base/atomicops.h"
8 #include "src/code-stubs.h" 8 #include "src/code-stubs.h"
9 #include "src/compilation-cache.h" 9 #include "src/compilation-cache.h"
10 #include "src/cpu-profiler.h" 10 #include "src/cpu-profiler.h"
(...skipping 595 matching lines...) Expand 10 before | Expand all | Expand 10 after
606 } 606 }
607 607
608 608
609 bool MarkCompactCollector::IsSweepingCompleted() { 609 bool MarkCompactCollector::IsSweepingCompleted() {
610 for (int i = 0; i < isolate()->num_sweeper_threads(); i++) { 610 for (int i = 0; i < isolate()->num_sweeper_threads(); i++) {
611 if (!isolate()->sweeper_threads()[i]->SweepingCompleted()) { 611 if (!isolate()->sweeper_threads()[i]->SweepingCompleted()) {
612 return false; 612 return false;
613 } 613 }
614 } 614 }
615 if (FLAG_job_based_sweeping) { 615 if (FLAG_job_based_sweeping) {
616 if (!pending_sweeper_jobs_semaphore_.WaitFor(TimeDelta::FromSeconds(0))) { 616 if (!pending_sweeper_jobs_semaphore_.WaitFor(
617 base::TimeDelta::FromSeconds(0))) {
617 return false; 618 return false;
618 } 619 }
619 pending_sweeper_jobs_semaphore_.Signal(); 620 pending_sweeper_jobs_semaphore_.Signal();
620 } 621 }
621 return true; 622 return true;
622 } 623 }
623 624
624 625
625 void MarkCompactCollector::RefillFreeList(PagedSpace* space) { 626 void MarkCompactCollector::RefillFreeList(PagedSpace* space) {
626 FreeList* free_list; 627 FreeList* free_list;
(...skipping 2605 matching lines...) Expand 10 before | Expand all | Expand 10 after
3232 static void SweepPrecisely(PagedSpace* space, 3233 static void SweepPrecisely(PagedSpace* space,
3233 Page* p, 3234 Page* p,
3234 ObjectVisitor* v) { 3235 ObjectVisitor* v) {
3235 ASSERT(!p->IsEvacuationCandidate() && !p->WasSwept()); 3236 ASSERT(!p->IsEvacuationCandidate() && !p->WasSwept());
3236 ASSERT_EQ(skip_list_mode == REBUILD_SKIP_LIST, 3237 ASSERT_EQ(skip_list_mode == REBUILD_SKIP_LIST,
3237 space->identity() == CODE_SPACE); 3238 space->identity() == CODE_SPACE);
3238 ASSERT((p->skip_list() == NULL) || (skip_list_mode == REBUILD_SKIP_LIST)); 3239 ASSERT((p->skip_list() == NULL) || (skip_list_mode == REBUILD_SKIP_LIST));
3239 3240
3240 double start_time = 0.0; 3241 double start_time = 0.0;
3241 if (FLAG_print_cumulative_gc_stat) { 3242 if (FLAG_print_cumulative_gc_stat) {
3242 start_time = OS::TimeCurrentMillis(); 3243 start_time = base::OS::TimeCurrentMillis();
3243 } 3244 }
3244 3245
3245 p->MarkSweptPrecisely(); 3246 p->MarkSweptPrecisely();
3246 3247
3247 Address free_start = p->area_start(); 3248 Address free_start = p->area_start();
3248 ASSERT(reinterpret_cast<intptr_t>(free_start) % (32 * kPointerSize) == 0); 3249 ASSERT(reinterpret_cast<intptr_t>(free_start) % (32 * kPointerSize) == 0);
3249 int offsets[16]; 3250 int offsets[16];
3250 3251
3251 SkipList* skip_list = p->skip_list(); 3252 SkipList* skip_list = p->skip_list();
3252 int curr_region = -1; 3253 int curr_region = -1;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
3301 } 3302 }
3302 space->Free(free_start, static_cast<int>(p->area_end() - free_start)); 3303 space->Free(free_start, static_cast<int>(p->area_end() - free_start));
3303 #ifdef ENABLE_GDB_JIT_INTERFACE 3304 #ifdef ENABLE_GDB_JIT_INTERFACE
3304 if (FLAG_gdbjit && space->identity() == CODE_SPACE) { 3305 if (FLAG_gdbjit && space->identity() == CODE_SPACE) {
3305 GDBJITInterface::RemoveCodeRange(free_start, p->area_end()); 3306 GDBJITInterface::RemoveCodeRange(free_start, p->area_end());
3306 } 3307 }
3307 #endif 3308 #endif
3308 } 3309 }
3309 p->ResetLiveBytes(); 3310 p->ResetLiveBytes();
3310 if (FLAG_print_cumulative_gc_stat) { 3311 if (FLAG_print_cumulative_gc_stat) {
3311 space->heap()->AddSweepingTime(OS::TimeCurrentMillis() - start_time); 3312 space->heap()->AddSweepingTime(base::OS::TimeCurrentMillis() - start_time);
3312 } 3313 }
3313 } 3314 }
3314 3315
3315 3316
3316 static bool SetMarkBitsUnderInvalidatedCode(Code* code, bool value) { 3317 static bool SetMarkBitsUnderInvalidatedCode(Code* code, bool value) {
3317 Page* p = Page::FromAddress(code->address()); 3318 Page* p = Page::FromAddress(code->address());
3318 3319
3319 if (p->IsEvacuationCandidate() || 3320 if (p->IsEvacuationCandidate() ||
3320 p->IsFlagSet(Page::RESCAN_ON_EVACUATION)) { 3321 p->IsFlagSet(Page::RESCAN_ON_EVACUATION)) {
3321 return false; 3322 return false;
(...skipping 1166 matching lines...) Expand 10 before | Expand all | Expand 10 after
4488 while (buffer != NULL) { 4489 while (buffer != NULL) {
4489 SlotsBuffer* next_buffer = buffer->next(); 4490 SlotsBuffer* next_buffer = buffer->next();
4490 DeallocateBuffer(buffer); 4491 DeallocateBuffer(buffer);
4491 buffer = next_buffer; 4492 buffer = next_buffer;
4492 } 4493 }
4493 *buffer_address = NULL; 4494 *buffer_address = NULL;
4494 } 4495 }
4495 4496
4496 4497
4497 } } // namespace v8::internal 4498 } } // namespace v8::internal
OLDNEW
« src/base/macros.h ('K') | « src/mark-compact.h ('k') | src/mips/assembler-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698