OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 Node* node = V8Node::toImpl(wrapper); | 195 Node* node = V8Node::toImpl(wrapper); |
196 if (node->hasEventListeners()) | 196 if (node->hasEventListeners()) |
197 addReferencesForNodeWithEventListeners( | 197 addReferencesForNodeWithEventListeners( |
198 m_isolate, node, v8::Persistent<v8::Object>::Cast(*value)); | 198 m_isolate, node, v8::Persistent<v8::Object>::Cast(*value)); |
199 Node* root = V8GCController::opaqueRootForGC(m_isolate, node); | 199 Node* root = V8GCController::opaqueRootForGC(m_isolate, node); |
200 m_isolate->SetObjectGroupId( | 200 m_isolate->SetObjectGroupId( |
201 *value, v8::UniqueId(reinterpret_cast<intptr_t>(root))); | 201 *value, v8::UniqueId(reinterpret_cast<intptr_t>(root))); |
202 if (m_constructRetainedObjectInfos) | 202 if (m_constructRetainedObjectInfos) |
203 m_groupsWhichNeedRetainerInfo.append(root); | 203 m_groupsWhichNeedRetainerInfo.append(root); |
204 } else if (classId == WrapperTypeInfo::ObjectClassId) { | 204 } else if (classId == WrapperTypeInfo::ObjectClassId) { |
205 type->visitDOMWrapper(m_isolate, toScriptWrappable(wrapper), | 205 if (!RuntimeEnabledFeatures::traceWrappablesEnabled()) { |
206 v8::Persistent<v8::Object>::Cast(*value)); | 206 type->visitDOMWrapper(m_isolate, toScriptWrappable(wrapper), |
| 207 v8::Persistent<v8::Object>::Cast(*value)); |
| 208 } |
207 } else { | 209 } else { |
208 NOTREACHED(); | 210 NOTREACHED(); |
209 } | 211 } |
210 } | 212 } |
211 | 213 |
212 void notifyFinished() { | 214 void notifyFinished() { |
213 if (!m_constructRetainedObjectInfos) | 215 if (!m_constructRetainedObjectInfos) |
214 return; | 216 return; |
215 std::sort(m_groupsWhichNeedRetainerInfo.begin(), | 217 std::sort(m_groupsWhichNeedRetainerInfo.begin(), |
216 m_groupsWhichNeedRetainerInfo.end()); | 218 m_groupsWhichNeedRetainerInfo.end()); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 | 272 |
271 void objectGroupingForMajorGC(v8::Isolate* isolate, | 273 void objectGroupingForMajorGC(v8::Isolate* isolate, |
272 bool constructRetainedObjectInfos) { | 274 bool constructRetainedObjectInfos) { |
273 MajorGCWrapperVisitor visitor(isolate, constructRetainedObjectInfos); | 275 MajorGCWrapperVisitor visitor(isolate, constructRetainedObjectInfos); |
274 isolate->VisitHandlesWithClassIds(&visitor); | 276 isolate->VisitHandlesWithClassIds(&visitor); |
275 visitor.notifyFinished(); | 277 visitor.notifyFinished(); |
276 } | 278 } |
277 | 279 |
278 void gcPrologueForMajorGC(v8::Isolate* isolate, | 280 void gcPrologueForMajorGC(v8::Isolate* isolate, |
279 bool constructRetainedObjectInfos) { | 281 bool constructRetainedObjectInfos) { |
280 // TODO(hlopko): Collect retained object infos for heap profiler | 282 if (!RuntimeEnabledFeatures::traceWrappablesEnabled() || |
281 if (!RuntimeEnabledFeatures::traceWrappablesEnabled()) { | 283 constructRetainedObjectInfos) { |
282 objectGroupingForMajorGC(isolate, constructRetainedObjectInfos); | 284 objectGroupingForMajorGC(isolate, constructRetainedObjectInfos); |
283 } | 285 } |
284 } | 286 } |
285 | 287 |
286 } // namespace | 288 } // namespace |
287 | 289 |
288 void V8GCController::gcPrologue(v8::Isolate* isolate, | 290 void V8GCController::gcPrologue(v8::Isolate* isolate, |
289 v8::GCType type, | 291 v8::GCType type, |
290 v8::GCCallbackFlags flags) { | 292 v8::GCCallbackFlags flags) { |
291 if (isMainThread()) | 293 if (isMainThread()) |
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 double startTime = WTF::currentTimeMS(); | 539 double startTime = WTF::currentTimeMS(); |
538 v8::HandleScope scope(isolate); | 540 v8::HandleScope scope(isolate); |
539 PendingActivityVisitor visitor(isolate, executionContext); | 541 PendingActivityVisitor visitor(isolate, executionContext); |
540 toIsolate(executionContext)->VisitHandlesWithClassIds(&visitor); | 542 toIsolate(executionContext)->VisitHandlesWithClassIds(&visitor); |
541 scanPendingActivityHistogram.count( | 543 scanPendingActivityHistogram.count( |
542 static_cast<int>(WTF::currentTimeMS() - startTime)); | 544 static_cast<int>(WTF::currentTimeMS() - startTime)); |
543 return visitor.pendingActivityFound(); | 545 return visitor.pendingActivityFound(); |
544 } | 546 } |
545 | 547 |
546 } // namespace blink | 548 } // namespace blink |
OLD | NEW |