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

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

Issue 198253004: Introduce per-isolate assert scopes and API to guard JS execution. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: add missing file Created 6 years, 9 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 // 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 3028 matching lines...) Expand 10 before | Expand all | Expand 10 after
3039 } 3039 }
3040 3040
3041 return false; 3041 return false;
3042 } 3042 }
3043 3043
3044 3044
3045 void MarkCompactCollector::EvacuateNewSpace() { 3045 void MarkCompactCollector::EvacuateNewSpace() {
3046 // There are soft limits in the allocation code, designed trigger a mark 3046 // There are soft limits in the allocation code, designed trigger a mark
3047 // sweep collection by failing allocations. But since we are already in 3047 // sweep collection by failing allocations. But since we are already in
3048 // a mark-sweep allocation, there is no sense in trying to trigger one. 3048 // a mark-sweep allocation, there is no sense in trying to trigger one.
3049 AlwaysAllocateScope scope; 3049 AlwaysAllocateScope scope(isolate());
3050 heap()->CheckNewSpaceExpansionCriteria(); 3050 heap()->CheckNewSpaceExpansionCriteria();
3051 3051
3052 NewSpace* new_space = heap()->new_space(); 3052 NewSpace* new_space = heap()->new_space();
3053 3053
3054 // Store allocation range before flipping semispaces. 3054 // Store allocation range before flipping semispaces.
3055 Address from_bottom = new_space->bottom(); 3055 Address from_bottom = new_space->bottom();
3056 Address from_top = new_space->top(); 3056 Address from_top = new_space->top();
3057 3057
3058 // Flip the semispaces. After flipping, to space is empty, from space has 3058 // Flip the semispaces. After flipping, to space is empty, from space has
3059 // live objects. 3059 // live objects.
(...skipping 11 matching lines...) Expand all
3071 NewSpacePage* p = it.next(); 3071 NewSpacePage* p = it.next();
3072 survivors_size += DiscoverAndPromoteBlackObjectsOnPage(new_space, p); 3072 survivors_size += DiscoverAndPromoteBlackObjectsOnPage(new_space, p);
3073 } 3073 }
3074 3074
3075 heap_->IncrementYoungSurvivorsCounter(survivors_size); 3075 heap_->IncrementYoungSurvivorsCounter(survivors_size);
3076 new_space->set_age_mark(new_space->top()); 3076 new_space->set_age_mark(new_space->top());
3077 } 3077 }
3078 3078
3079 3079
3080 void MarkCompactCollector::EvacuateLiveObjectsFromPage(Page* p) { 3080 void MarkCompactCollector::EvacuateLiveObjectsFromPage(Page* p) {
3081 AlwaysAllocateScope always_allocate; 3081 AlwaysAllocateScope always_allocate(isolate());
3082 PagedSpace* space = static_cast<PagedSpace*>(p->owner()); 3082 PagedSpace* space = static_cast<PagedSpace*>(p->owner());
3083 ASSERT(p->IsEvacuationCandidate() && !p->WasSwept()); 3083 ASSERT(p->IsEvacuationCandidate() && !p->WasSwept());
3084 p->MarkSweptPrecisely(); 3084 p->MarkSweptPrecisely();
3085 3085
3086 int offsets[16]; 3086 int offsets[16];
3087 3087
3088 for (MarkBitCellIterator it(p); !it.Done(); it.Advance()) { 3088 for (MarkBitCellIterator it(p); !it.Done(); it.Advance()) {
3089 Address cell_base = it.CurrentCellBase(); 3089 Address cell_base = it.CurrentCellBase();
3090 MarkBit::CellType* cell = it.CurrentCell(); 3090 MarkBit::CellType* cell = it.CurrentCell();
3091 3091
(...skipping 1421 matching lines...) Expand 10 before | Expand all | Expand 10 after
4513 while (buffer != NULL) { 4513 while (buffer != NULL) {
4514 SlotsBuffer* next_buffer = buffer->next(); 4514 SlotsBuffer* next_buffer = buffer->next();
4515 DeallocateBuffer(buffer); 4515 DeallocateBuffer(buffer);
4516 buffer = next_buffer; 4516 buffer = next_buffer;
4517 } 4517 }
4518 *buffer_address = NULL; 4518 *buffer_address = NULL;
4519 } 4519 }
4520 4520
4521 4521
4522 } } // namespace v8::internal 4522 } } // namespace v8::internal
OLDNEW
« include/v8.h ('K') | « src/isolate.cc ('k') | test/cctest/cctest.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698