OLD | NEW |
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 4479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4490 } | 4490 } |
4491 | 4491 |
4492 | 4492 |
4493 void v8::V8::VisitExternalResources(ExternalResourceVisitor* visitor) { | 4493 void v8::V8::VisitExternalResources(ExternalResourceVisitor* visitor) { |
4494 i::Isolate* isolate = i::Isolate::Current(); | 4494 i::Isolate* isolate = i::Isolate::Current(); |
4495 IsDeadCheck(isolate, "v8::V8::VisitExternalResources"); | 4495 IsDeadCheck(isolate, "v8::V8::VisitExternalResources"); |
4496 isolate->heap()->VisitExternalResources(visitor); | 4496 isolate->heap()->VisitExternalResources(visitor); |
4497 } | 4497 } |
4498 | 4498 |
4499 | 4499 |
| 4500 class VisitorAdapter : public i::ObjectVisitor { |
| 4501 public: |
| 4502 explicit VisitorAdapter(PersistentHandleVisitor* visitor) |
| 4503 : visitor_(visitor) {} |
| 4504 virtual void VisitPointers(i::Object** start, i::Object** end) { |
| 4505 UNREACHABLE(); |
| 4506 } |
| 4507 virtual void VisitEmbedderReference(i::Object** p, uint16_t class_id) { |
| 4508 visitor_->VisitPersistentHandle(ToApi<Value>(i::Handle<i::Object>(p)), |
| 4509 class_id); |
| 4510 } |
| 4511 private: |
| 4512 PersistentHandleVisitor* visitor_; |
| 4513 }; |
| 4514 |
| 4515 |
4500 void v8::V8::VisitHandlesWithClassIds(PersistentHandleVisitor* visitor) { | 4516 void v8::V8::VisitHandlesWithClassIds(PersistentHandleVisitor* visitor) { |
4501 i::Isolate* isolate = i::Isolate::Current(); | 4517 i::Isolate* isolate = i::Isolate::Current(); |
4502 IsDeadCheck(isolate, "v8::V8::VisitHandlesWithClassId"); | 4518 IsDeadCheck(isolate, "v8::V8::VisitHandlesWithClassId"); |
4503 | 4519 |
4504 i::AssertNoAllocation no_allocation; | 4520 i::AssertNoAllocation no_allocation; |
4505 | 4521 |
4506 class VisitorAdapter : public i::ObjectVisitor { | 4522 VisitorAdapter visitor_adapter(visitor); |
4507 public: | |
4508 explicit VisitorAdapter(PersistentHandleVisitor* visitor) | |
4509 : visitor_(visitor) {} | |
4510 virtual void VisitPointers(i::Object** start, i::Object** end) { | |
4511 UNREACHABLE(); | |
4512 } | |
4513 virtual void VisitEmbedderReference(i::Object** p, uint16_t class_id) { | |
4514 visitor_->VisitPersistentHandle(ToApi<Value>(i::Handle<i::Object>(p)), | |
4515 class_id); | |
4516 } | |
4517 private: | |
4518 PersistentHandleVisitor* visitor_; | |
4519 } visitor_adapter(visitor); | |
4520 isolate->global_handles()->IterateAllRootsWithClassIds(&visitor_adapter); | 4523 isolate->global_handles()->IterateAllRootsWithClassIds(&visitor_adapter); |
4521 } | 4524 } |
4522 | 4525 |
4523 | 4526 |
| 4527 void v8::V8::VisitHandlesForPartialDependence( |
| 4528 PersistentHandleVisitor* visitor) { |
| 4529 i::Isolate* isolate = i::Isolate::Current(); |
| 4530 IsDeadCheck(isolate, "v8::V8::VisitHandlesForPartialDependence"); |
| 4531 |
| 4532 i::AssertNoAllocation no_allocation; |
| 4533 |
| 4534 VisitorAdapter visitor_adapter(visitor); |
| 4535 isolate->global_handles()->IterateAllRootsInNewSpaceWithClassIds( |
| 4536 &visitor_adapter); |
| 4537 } |
| 4538 |
| 4539 |
4524 bool v8::V8::IdleNotification(int hint) { | 4540 bool v8::V8::IdleNotification(int hint) { |
4525 // Returning true tells the caller that it need not | 4541 // Returning true tells the caller that it need not |
4526 // continue to call IdleNotification. | 4542 // continue to call IdleNotification. |
4527 i::Isolate* isolate = i::Isolate::Current(); | 4543 i::Isolate* isolate = i::Isolate::Current(); |
4528 if (isolate == NULL || !isolate->IsInitialized()) return true; | 4544 if (isolate == NULL || !isolate->IsInitialized()) return true; |
4529 return i::V8::IdleNotification(hint); | 4545 return i::V8::IdleNotification(hint); |
4530 } | 4546 } |
4531 | 4547 |
4532 | 4548 |
4533 void v8::V8::LowMemoryNotification() { | 4549 void v8::V8::LowMemoryNotification() { |
(...skipping 2207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6741 | 6757 |
6742 v->VisitPointers(blocks_.first(), first_block_limit_); | 6758 v->VisitPointers(blocks_.first(), first_block_limit_); |
6743 | 6759 |
6744 for (int i = 1; i < blocks_.length(); i++) { | 6760 for (int i = 1; i < blocks_.length(); i++) { |
6745 v->VisitPointers(blocks_[i], &blocks_[i][kHandleBlockSize]); | 6761 v->VisitPointers(blocks_[i], &blocks_[i][kHandleBlockSize]); |
6746 } | 6762 } |
6747 } | 6763 } |
6748 | 6764 |
6749 | 6765 |
6750 } } // namespace v8::internal | 6766 } } // namespace v8::internal |
OLD | NEW |