Index: src/api.cc |
diff --git a/src/api.cc b/src/api.cc |
index f4a78256ac41417dbe0fa2635bd1dd351b1f610f..9cdb301e5de5d9b05c79fb0de9dc20ab276ceec3 100644 |
--- a/src/api.cc |
+++ b/src/api.cc |
@@ -4497,30 +4497,46 @@ void v8::V8::VisitExternalResources(ExternalResourceVisitor* visitor) { |
} |
+class VisitorAdapter : public i::ObjectVisitor { |
+ public: |
+ explicit VisitorAdapter(PersistentHandleVisitor* visitor) |
+ : visitor_(visitor) {} |
+ virtual void VisitPointers(i::Object** start, i::Object** end) { |
+ UNREACHABLE(); |
+ } |
+ virtual void VisitEmbedderReference(i::Object** p, uint16_t class_id) { |
+ visitor_->VisitPersistentHandle(ToApi<Value>(i::Handle<i::Object>(p)), |
+ class_id); |
+ } |
+ private: |
+ PersistentHandleVisitor* visitor_; |
+}; |
+ |
+ |
void v8::V8::VisitHandlesWithClassIds(PersistentHandleVisitor* visitor) { |
i::Isolate* isolate = i::Isolate::Current(); |
IsDeadCheck(isolate, "v8::V8::VisitHandlesWithClassId"); |
i::AssertNoAllocation no_allocation; |
- class VisitorAdapter : public i::ObjectVisitor { |
- public: |
- explicit VisitorAdapter(PersistentHandleVisitor* visitor) |
- : visitor_(visitor) {} |
- virtual void VisitPointers(i::Object** start, i::Object** end) { |
- UNREACHABLE(); |
- } |
- virtual void VisitEmbedderReference(i::Object** p, uint16_t class_id) { |
- visitor_->VisitPersistentHandle(ToApi<Value>(i::Handle<i::Object>(p)), |
- class_id); |
- } |
- private: |
- PersistentHandleVisitor* visitor_; |
- } visitor_adapter(visitor); |
+ VisitorAdapter visitor_adapter(visitor); |
isolate->global_handles()->IterateAllRootsWithClassIds(&visitor_adapter); |
} |
+void v8::V8::VisitHandlesForPartialDependence( |
+ PersistentHandleVisitor* visitor) { |
+ i::Isolate* isolate = i::Isolate::Current(); |
+ IsDeadCheck(isolate, "v8::V8::VisitHandlesForPartialDependence"); |
+ |
+ i::AssertNoAllocation no_allocation; |
+ |
+ VisitorAdapter visitor_adapter(visitor); |
+ isolate->global_handles()->IterateAllRootsInNewSpaceWithClassIds( |
+ &visitor_adapter); |
+} |
+ |
+ |
bool v8::V8::IdleNotification(int hint) { |
// Returning true tells the caller that it need not |
// continue to call IdleNotification. |