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

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

Issue 2377203003: [heap] Remove unnecessary marking specializations (Closed)
Patch Set: BytecodeArray Created 4 years, 2 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
« no previous file with comments | « src/heap/incremental-marking.cc ('k') | src/heap/objects-visiting.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/heap/mark-compact.h" 5 #include "src/heap/mark-compact.h"
6 6
7 #include "src/base/atomicops.h" 7 #include "src/base/atomicops.h"
8 #include "src/base/bits.h" 8 #include "src/base/bits.h"
9 #include "src/base/sys-info.h" 9 #include "src/base/sys-info.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 1228 matching lines...) Expand 10 before | Expand all | Expand 10 after
1239 1239
1240 // Works by setting the current sweep_generation (as a smi) in the 1240 // Works by setting the current sweep_generation (as a smi) in the
1241 // code object place in the data array of the RegExp and keeps a copy 1241 // code object place in the data array of the RegExp and keeps a copy
1242 // around that can be reinstated if we reuse the RegExp before flushing. 1242 // around that can be reinstated if we reuse the RegExp before flushing.
1243 // If we did not use the code for kRegExpCodeThreshold mark sweep GCs 1243 // If we did not use the code for kRegExpCodeThreshold mark sweep GCs
1244 // we flush the code. 1244 // we flush the code.
1245 static void VisitRegExpAndFlushCode(Map* map, HeapObject* object) { 1245 static void VisitRegExpAndFlushCode(Map* map, HeapObject* object) {
1246 Heap* heap = map->GetHeap(); 1246 Heap* heap = map->GetHeap();
1247 MarkCompactCollector* collector = heap->mark_compact_collector(); 1247 MarkCompactCollector* collector = heap->mark_compact_collector();
1248 if (!collector->is_code_flushing_enabled()) { 1248 if (!collector->is_code_flushing_enabled()) {
1249 VisitJSRegExp(map, object); 1249 JSObjectVisitor::Visit(map, object);
1250 return; 1250 return;
1251 } 1251 }
1252 JSRegExp* re = reinterpret_cast<JSRegExp*>(object); 1252 JSRegExp* re = reinterpret_cast<JSRegExp*>(object);
1253 // Flush code or set age on both one byte and two byte code. 1253 // Flush code or set age on both one byte and two byte code.
1254 UpdateRegExpCodeAgeAndFlush(heap, re, true); 1254 UpdateRegExpCodeAgeAndFlush(heap, re, true);
1255 UpdateRegExpCodeAgeAndFlush(heap, re, false); 1255 UpdateRegExpCodeAgeAndFlush(heap, re, false);
1256 // Visit the fields of the RegExp, including the updated FixedArray. 1256 // Visit the fields of the RegExp, including the updated FixedArray.
1257 VisitJSRegExp(map, object); 1257 JSObjectVisitor::Visit(map, object);
1258 } 1258 }
1259 }; 1259 };
1260 1260
1261 1261
1262 void MarkCompactMarkingVisitor::Initialize() { 1262 void MarkCompactMarkingVisitor::Initialize() {
1263 StaticMarkingVisitor<MarkCompactMarkingVisitor>::Initialize(); 1263 StaticMarkingVisitor<MarkCompactMarkingVisitor>::Initialize();
1264 1264
1265 table_.Register(kVisitJSRegExp, &VisitRegExpAndFlushCode); 1265 table_.Register(kVisitJSRegExp, &VisitRegExpAndFlushCode);
1266 } 1266 }
1267 1267
(...skipping 2730 matching lines...) Expand 10 before | Expand all | Expand 10 after
3998 // The target is always in old space, we don't have to record the slot in 3998 // The target is always in old space, we don't have to record the slot in
3999 // the old-to-new remembered set. 3999 // the old-to-new remembered set.
4000 DCHECK(!heap()->InNewSpace(target)); 4000 DCHECK(!heap()->InNewSpace(target));
4001 RecordRelocSlot(host, &rinfo, target); 4001 RecordRelocSlot(host, &rinfo, target);
4002 } 4002 }
4003 } 4003 }
4004 } 4004 }
4005 4005
4006 } // namespace internal 4006 } // namespace internal
4007 } // namespace v8 4007 } // namespace v8
OLDNEW
« no previous file with comments | « src/heap/incremental-marking.cc ('k') | src/heap/objects-visiting.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698