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

Unified Diff: runtime/vm/gc_marker.cc

Issue 10444091: Avoid reading RawObject::class_ directly in the runtime. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | runtime/vm/heap.cc » ('j') | runtime/vm/raw_object.h » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/gc_marker.cc
diff --git a/runtime/vm/gc_marker.cc b/runtime/vm/gc_marker.cc
index 6bdb245a0672d7e4f45da57fa6a17472740dce69..ee2340c7bc3cf94d57372599ad8d15a157085e04 100644
--- a/runtime/vm/gc_marker.cc
+++ b/runtime/vm/gc_marker.cc
@@ -116,8 +116,12 @@ class MarkingStack : public ValueObject {
class MarkingVisitor : public ObjectPointerVisitor {
public:
- MarkingVisitor(Heap* heap, PageSpace* page_space, MarkingStack* marking_stack)
- : heap_(heap),
+ MarkingVisitor(Isolate* isolate,
+ Heap* heap,
+ PageSpace* page_space,
+ MarkingStack* marking_stack)
+ : isolate_(isolate),
+ heap_(heap),
vm_heap_(Dart::vm_isolate()->heap()),
page_space_(page_space),
marking_stack_(marking_stack) {
@@ -139,7 +143,7 @@ class MarkingVisitor : public ObjectPointerVisitor {
// Mark the object and push it on the marking stack.
ASSERT(!raw_obj->IsMarked());
- RawClass* raw_class = raw_obj->ptr()->class_;
+ RawClass* raw_class = isolate_->class_table()->At(raw_obj->GetClassIndex());
raw_obj->SetMarkBit();
marking_stack_->Push(raw_obj);
@@ -174,6 +178,7 @@ class MarkingVisitor : public ObjectPointerVisitor {
MarkAndPush(raw_obj);
}
+ Isolate* isolate_;
Heap* heap_;
Heap* vm_heap_;
PageSpace* page_space_;
@@ -314,7 +319,7 @@ void GCMarker::MarkObjects(Isolate* isolate,
bool invoke_api_callbacks) {
MarkingStack marking_stack;
Prologue(isolate, invoke_api_callbacks);
- MarkingVisitor mark(heap_, page_space, &marking_stack);
+ MarkingVisitor mark(isolate, heap_, page_space, &marking_stack);
IterateRoots(isolate, &mark, !invoke_api_callbacks);
DrainMarkingStack(isolate, &mark);
IterateWeakReferences(isolate, &mark);
« no previous file with comments | « no previous file | runtime/vm/heap.cc » ('j') | runtime/vm/raw_object.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698