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

Side by Side Diff: src/api.cc

Issue 3060008: Heap profiler: reduce heap snapshots size. (Closed)
Patch Set: Comments addressed Created 10 years, 4 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 | « include/v8-profiler.h ('k') | src/list.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 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 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 4473 matching lines...) Expand 10 before | Expand all | Expand 10 after
4484 const CpuProfile* CpuProfiler::StopProfiling(Handle<String> title, 4484 const CpuProfile* CpuProfiler::StopProfiling(Handle<String> title,
4485 Handle<Value> security_token) { 4485 Handle<Value> security_token) {
4486 IsDeadCheck("v8::CpuProfiler::StopProfiling"); 4486 IsDeadCheck("v8::CpuProfiler::StopProfiling");
4487 return reinterpret_cast<const CpuProfile*>( 4487 return reinterpret_cast<const CpuProfile*>(
4488 i::CpuProfiler::StopProfiling( 4488 i::CpuProfiler::StopProfiling(
4489 security_token.IsEmpty() ? NULL : *Utils::OpenHandle(*security_token), 4489 security_token.IsEmpty() ? NULL : *Utils::OpenHandle(*security_token),
4490 *Utils::OpenHandle(*title))); 4490 *Utils::OpenHandle(*title)));
4491 } 4491 }
4492 4492
4493 4493
4494 static i::HeapGraphEdge* ToInternal(const HeapGraphEdge* edge) {
4495 return const_cast<i::HeapGraphEdge*>(
4496 reinterpret_cast<const i::HeapGraphEdge*>(edge));
4497 }
4498
4494 HeapGraphEdge::Type HeapGraphEdge::GetType() const { 4499 HeapGraphEdge::Type HeapGraphEdge::GetType() const {
4495 IsDeadCheck("v8::HeapGraphEdge::GetType"); 4500 IsDeadCheck("v8::HeapGraphEdge::GetType");
4496 return static_cast<HeapGraphEdge::Type>( 4501 return static_cast<HeapGraphEdge::Type>(ToInternal(this)->type());
4497 reinterpret_cast<const i::HeapGraphEdge*>(this)->type());
4498 } 4502 }
4499 4503
4500 4504
4501 Handle<Value> HeapGraphEdge::GetName() const { 4505 Handle<Value> HeapGraphEdge::GetName() const {
4502 IsDeadCheck("v8::HeapGraphEdge::GetName"); 4506 IsDeadCheck("v8::HeapGraphEdge::GetName");
4503 const i::HeapGraphEdge* edge = 4507 i::HeapGraphEdge* edge = ToInternal(this);
4504 reinterpret_cast<const i::HeapGraphEdge*>(this);
4505 switch (edge->type()) { 4508 switch (edge->type()) {
4506 case i::HeapGraphEdge::CONTEXT_VARIABLE: 4509 case i::HeapGraphEdge::kContextVariable:
4507 case i::HeapGraphEdge::INTERNAL: 4510 case i::HeapGraphEdge::kInternal:
4508 case i::HeapGraphEdge::PROPERTY: 4511 case i::HeapGraphEdge::kProperty:
4509 return Handle<String>(ToApi<String>(i::Factory::LookupAsciiSymbol( 4512 return Handle<String>(ToApi<String>(i::Factory::LookupAsciiSymbol(
4510 edge->name()))); 4513 edge->name())));
4511 case i::HeapGraphEdge::ELEMENT: 4514 case i::HeapGraphEdge::kElement:
4512 return Handle<Number>(ToApi<Number>(i::Factory::NewNumberFromInt( 4515 return Handle<Number>(ToApi<Number>(i::Factory::NewNumberFromInt(
4513 edge->index()))); 4516 edge->index())));
4514 default: UNREACHABLE(); 4517 default: UNREACHABLE();
4515 } 4518 }
4516 return ImplementationUtilities::Undefined(); 4519 return ImplementationUtilities::Undefined();
4517 } 4520 }
4518 4521
4519 4522
4520 const HeapGraphNode* HeapGraphEdge::GetFromNode() const { 4523 const HeapGraphNode* HeapGraphEdge::GetFromNode() const {
4521 IsDeadCheck("v8::HeapGraphEdge::GetFromNode"); 4524 IsDeadCheck("v8::HeapGraphEdge::GetFromNode");
4522 const i::HeapEntry* from = 4525 const i::HeapEntry* from = ToInternal(this)->From();
4523 reinterpret_cast<const i::HeapGraphEdge*>(this)->from();
4524 return reinterpret_cast<const HeapGraphNode*>(from); 4526 return reinterpret_cast<const HeapGraphNode*>(from);
4525 } 4527 }
4526 4528
4527 4529
4528 const HeapGraphNode* HeapGraphEdge::GetToNode() const { 4530 const HeapGraphNode* HeapGraphEdge::GetToNode() const {
4529 IsDeadCheck("v8::HeapGraphEdge::GetToNode"); 4531 IsDeadCheck("v8::HeapGraphEdge::GetToNode");
4530 const i::HeapEntry* to = 4532 const i::HeapEntry* to = ToInternal(this)->to();
4531 reinterpret_cast<const i::HeapGraphEdge*>(this)->to();
4532 return reinterpret_cast<const HeapGraphNode*>(to); 4533 return reinterpret_cast<const HeapGraphNode*>(to);
4533 } 4534 }
4534 4535
4535 4536
4537 static i::HeapGraphPath* ToInternal(const HeapGraphPath* path) {
4538 return const_cast<i::HeapGraphPath*>(
4539 reinterpret_cast<const i::HeapGraphPath*>(path));
4540 }
4541
4542
4536 int HeapGraphPath::GetEdgesCount() const { 4543 int HeapGraphPath::GetEdgesCount() const {
4537 return reinterpret_cast<const i::HeapGraphPath*>(this)->path()->length(); 4544 return ToInternal(this)->path()->length();
4538 } 4545 }
4539 4546
4540 4547
4541 const HeapGraphEdge* HeapGraphPath::GetEdge(int index) const { 4548 const HeapGraphEdge* HeapGraphPath::GetEdge(int index) const {
4542 return reinterpret_cast<const HeapGraphEdge*>( 4549 return reinterpret_cast<const HeapGraphEdge*>(
4543 reinterpret_cast<const i::HeapGraphPath*>(this)->path()->at(index)); 4550 ToInternal(this)->path()->at(index));
4544 } 4551 }
4545 4552
4546 4553
4547 const HeapGraphNode* HeapGraphPath::GetFromNode() const { 4554 const HeapGraphNode* HeapGraphPath::GetFromNode() const {
4548 return GetEdgesCount() > 0 ? GetEdge(0)->GetFromNode() : NULL; 4555 return GetEdgesCount() > 0 ? GetEdge(0)->GetFromNode() : NULL;
4549 } 4556 }
4550 4557
4551 4558
4552 const HeapGraphNode* HeapGraphPath::GetToNode() const { 4559 const HeapGraphNode* HeapGraphPath::GetToNode() const {
4553 const int count = GetEdgesCount(); 4560 const int count = GetEdgesCount();
4554 return count > 0 ? GetEdge(count - 1)->GetToNode() : NULL; 4561 return count > 0 ? GetEdge(count - 1)->GetToNode() : NULL;
4555 } 4562 }
4556 4563
4557 4564
4565 static i::HeapEntry* ToInternal(const HeapGraphNode* entry) {
4566 return const_cast<i::HeapEntry*>(
4567 reinterpret_cast<const i::HeapEntry*>(entry));
4568 }
4569
4570
4558 HeapGraphNode::Type HeapGraphNode::GetType() const { 4571 HeapGraphNode::Type HeapGraphNode::GetType() const {
4559 IsDeadCheck("v8::HeapGraphNode::GetType"); 4572 IsDeadCheck("v8::HeapGraphNode::GetType");
4560 return static_cast<HeapGraphNode::Type>( 4573 return static_cast<HeapGraphNode::Type>(ToInternal(this)->type());
4561 reinterpret_cast<const i::HeapEntry*>(this)->type());
4562 } 4574 }
4563 4575
4564 4576
4565 Handle<String> HeapGraphNode::GetName() const { 4577 Handle<String> HeapGraphNode::GetName() const {
4566 IsDeadCheck("v8::HeapGraphNode::GetName"); 4578 IsDeadCheck("v8::HeapGraphNode::GetName");
4567 return Handle<String>(ToApi<String>(i::Factory::LookupAsciiSymbol( 4579 return Handle<String>(ToApi<String>(i::Factory::LookupAsciiSymbol(
4568 reinterpret_cast<const i::HeapEntry*>(this)->name()))); 4580 ToInternal(this)->name())));
4569 } 4581 }
4570 4582
4571 4583
4572 uint64_t HeapGraphNode::GetId() const { 4584 uint64_t HeapGraphNode::GetId() const {
4573 IsDeadCheck("v8::HeapGraphNode::GetId"); 4585 IsDeadCheck("v8::HeapGraphNode::GetId");
4574 return reinterpret_cast<const i::HeapEntry*>(this)->id(); 4586 return ToInternal(this)->id();
4575 } 4587 }
4576 4588
4577 4589
4578 int HeapGraphNode::GetSelfSize() const { 4590 int HeapGraphNode::GetSelfSize() const {
4579 IsDeadCheck("v8::HeapGraphNode::GetSelfSize"); 4591 IsDeadCheck("v8::HeapGraphNode::GetSelfSize");
4580 return reinterpret_cast<const i::HeapEntry*>(this)->self_size(); 4592 return ToInternal(this)->self_size();
4581 } 4593 }
4582 4594
4583 4595
4584 int HeapGraphNode::GetTotalSize() const { 4596 int HeapGraphNode::GetReachableSize() const {
4585 IsDeadCheck("v8::HeapSnapshot::GetHead"); 4597 IsDeadCheck("v8::HeapSnapshot::GetReachableSize");
4586 return const_cast<i::HeapEntry*>( 4598 return ToInternal(this)->ReachableSize();
4587 reinterpret_cast<const i::HeapEntry*>(this))->TotalSize();
4588 } 4599 }
4589 4600
4590 4601
4591 int HeapGraphNode::GetPrivateSize() const { 4602 int HeapGraphNode::GetRetainedSize() const {
4592 IsDeadCheck("v8::HeapSnapshot::GetPrivateSize"); 4603 IsDeadCheck("v8::HeapSnapshot::GetRetainedSize");
4593 return const_cast<i::HeapEntry*>( 4604 return ToInternal(this)->RetainedSize();
4594 reinterpret_cast<const i::HeapEntry*>(this))->NonSharedTotalSize();
4595 } 4605 }
4596 4606
4597 4607
4598 int HeapGraphNode::GetChildrenCount() const { 4608 int HeapGraphNode::GetChildrenCount() const {
4599 IsDeadCheck("v8::HeapSnapshot::GetChildrenCount"); 4609 IsDeadCheck("v8::HeapSnapshot::GetChildrenCount");
4600 return reinterpret_cast<const i::HeapEntry*>(this)->children()->length(); 4610 return ToInternal(this)->children().length();
4601 } 4611 }
4602 4612
4603 4613
4604 const HeapGraphEdge* HeapGraphNode::GetChild(int index) const { 4614 const HeapGraphEdge* HeapGraphNode::GetChild(int index) const {
4605 IsDeadCheck("v8::HeapSnapshot::GetChild"); 4615 IsDeadCheck("v8::HeapSnapshot::GetChild");
4606 return reinterpret_cast<const HeapGraphEdge*>( 4616 return reinterpret_cast<const HeapGraphEdge*>(
4607 reinterpret_cast<const i::HeapEntry*>(this)->children()->at(index)); 4617 &ToInternal(this)->children()[index]);
4608 } 4618 }
4609 4619
4610 4620
4611 int HeapGraphNode::GetRetainersCount() const { 4621 int HeapGraphNode::GetRetainersCount() const {
4612 IsDeadCheck("v8::HeapSnapshot::GetRetainersCount"); 4622 IsDeadCheck("v8::HeapSnapshot::GetRetainersCount");
4613 return reinterpret_cast<const i::HeapEntry*>(this)->retainers()->length(); 4623 return ToInternal(this)->retainers().length();
4614 } 4624 }
4615 4625
4616 4626
4617 const HeapGraphEdge* HeapGraphNode::GetRetainer(int index) const { 4627 const HeapGraphEdge* HeapGraphNode::GetRetainer(int index) const {
4618 IsDeadCheck("v8::HeapSnapshot::GetRetainer"); 4628 IsDeadCheck("v8::HeapSnapshot::GetRetainer");
4619 return reinterpret_cast<const HeapGraphEdge*>( 4629 return reinterpret_cast<const HeapGraphEdge*>(
4620 reinterpret_cast<const i::HeapEntry*>(this)->retainers()->at(index)); 4630 ToInternal(this)->retainers()[index]);
4621 } 4631 }
4622 4632
4623 4633
4624 int HeapGraphNode::GetRetainingPathsCount() const { 4634 int HeapGraphNode::GetRetainingPathsCount() const {
4625 IsDeadCheck("v8::HeapSnapshot::GetRetainingPathsCount"); 4635 IsDeadCheck("v8::HeapSnapshot::GetRetainingPathsCount");
4626 return const_cast<i::HeapEntry*>( 4636 return ToInternal(this)->GetRetainingPaths()->length();
4627 reinterpret_cast<const i::HeapEntry*>(
4628 this))->GetRetainingPaths()->length();
4629 } 4637 }
4630 4638
4631 4639
4632 const HeapGraphPath* HeapGraphNode::GetRetainingPath(int index) const { 4640 const HeapGraphPath* HeapGraphNode::GetRetainingPath(int index) const {
4633 IsDeadCheck("v8::HeapSnapshot::GetRetainingPath"); 4641 IsDeadCheck("v8::HeapSnapshot::GetRetainingPath");
4634 return reinterpret_cast<const HeapGraphPath*>( 4642 return reinterpret_cast<const HeapGraphPath*>(
4635 const_cast<i::HeapEntry*>( 4643 ToInternal(this)->GetRetainingPaths()->at(index));
4636 reinterpret_cast<const i::HeapEntry*>(
4637 this))->GetRetainingPaths()->at(index));
4638 } 4644 }
4639 4645
4640 4646
4641 const HeapGraphNode* HeapSnapshotsDiff::GetAdditionsRoot() const { 4647 const HeapGraphNode* HeapSnapshotsDiff::GetAdditionsRoot() const {
4642 IsDeadCheck("v8::HeapSnapshotsDiff::GetAdditionsRoot"); 4648 IsDeadCheck("v8::HeapSnapshotsDiff::GetAdditionsRoot");
4643 const i::HeapSnapshotsDiff* diff = 4649 i::HeapSnapshotsDiff* diff =
4644 reinterpret_cast<const i::HeapSnapshotsDiff*>(this); 4650 const_cast<i::HeapSnapshotsDiff*>(
4651 reinterpret_cast<const i::HeapSnapshotsDiff*>(this));
4645 return reinterpret_cast<const HeapGraphNode*>(diff->additions_root()); 4652 return reinterpret_cast<const HeapGraphNode*>(diff->additions_root());
4646 } 4653 }
4647 4654
4648 4655
4649 const HeapGraphNode* HeapSnapshotsDiff::GetDeletionsRoot() const { 4656 const HeapGraphNode* HeapSnapshotsDiff::GetDeletionsRoot() const {
4650 IsDeadCheck("v8::HeapSnapshotsDiff::GetDeletionsRoot"); 4657 IsDeadCheck("v8::HeapSnapshotsDiff::GetDeletionsRoot");
4651 const i::HeapSnapshotsDiff* diff = 4658 i::HeapSnapshotsDiff* diff =
4652 reinterpret_cast<const i::HeapSnapshotsDiff*>(this); 4659 const_cast<i::HeapSnapshotsDiff*>(
4660 reinterpret_cast<const i::HeapSnapshotsDiff*>(this));
4653 return reinterpret_cast<const HeapGraphNode*>(diff->deletions_root()); 4661 return reinterpret_cast<const HeapGraphNode*>(diff->deletions_root());
4654 } 4662 }
4655 4663
4656 4664
4665 static i::HeapSnapshot* ToInternal(const HeapSnapshot* snapshot) {
4666 return const_cast<i::HeapSnapshot*>(
4667 reinterpret_cast<const i::HeapSnapshot*>(snapshot));
4668 }
4669
4670
4657 unsigned HeapSnapshot::GetUid() const { 4671 unsigned HeapSnapshot::GetUid() const {
4658 IsDeadCheck("v8::HeapSnapshot::GetUid"); 4672 IsDeadCheck("v8::HeapSnapshot::GetUid");
4659 return reinterpret_cast<const i::HeapSnapshot*>(this)->uid(); 4673 return ToInternal(this)->uid();
4660 } 4674 }
4661 4675
4662 4676
4663 Handle<String> HeapSnapshot::GetTitle() const { 4677 Handle<String> HeapSnapshot::GetTitle() const {
4664 IsDeadCheck("v8::HeapSnapshot::GetTitle"); 4678 IsDeadCheck("v8::HeapSnapshot::GetTitle");
4665 const i::HeapSnapshot* snapshot =
4666 reinterpret_cast<const i::HeapSnapshot*>(this);
4667 return Handle<String>(ToApi<String>(i::Factory::LookupAsciiSymbol( 4679 return Handle<String>(ToApi<String>(i::Factory::LookupAsciiSymbol(
4668 snapshot->title()))); 4680 ToInternal(this)->title())));
4669 } 4681 }
4670 4682
4671 4683
4672 const HeapGraphNode* HeapSnapshot::GetRoot() const { 4684 const HeapGraphNode* HeapSnapshot::GetRoot() const {
4673 IsDeadCheck("v8::HeapSnapshot::GetHead"); 4685 IsDeadCheck("v8::HeapSnapshot::GetHead");
4674 const i::HeapSnapshot* snapshot = 4686 return reinterpret_cast<const HeapGraphNode*>(ToInternal(this)->root());
4675 reinterpret_cast<const i::HeapSnapshot*>(this);
4676 return reinterpret_cast<const HeapGraphNode*>(snapshot->const_root());
4677 } 4687 }
4678 4688
4679 4689
4680 const HeapSnapshotsDiff* HeapSnapshot::CompareWith( 4690 const HeapSnapshotsDiff* HeapSnapshot::CompareWith(
4681 const HeapSnapshot* snapshot) const { 4691 const HeapSnapshot* snapshot) const {
4682 IsDeadCheck("v8::HeapSnapshot::CompareWith"); 4692 IsDeadCheck("v8::HeapSnapshot::CompareWith");
4683 i::HeapSnapshot* snapshot1 = const_cast<i::HeapSnapshot*>(
4684 reinterpret_cast<const i::HeapSnapshot*>(this));
4685 i::HeapSnapshot* snapshot2 = const_cast<i::HeapSnapshot*>(
4686 reinterpret_cast<const i::HeapSnapshot*>(snapshot));
4687 return reinterpret_cast<const HeapSnapshotsDiff*>( 4693 return reinterpret_cast<const HeapSnapshotsDiff*>(
4688 snapshot1->CompareWith(snapshot2)); 4694 ToInternal(this)->CompareWith(ToInternal(snapshot)));
4689 } 4695 }
4690 4696
4691 4697
4692 int HeapProfiler::GetSnapshotsCount() { 4698 int HeapProfiler::GetSnapshotsCount() {
4693 IsDeadCheck("v8::HeapProfiler::GetSnapshotsCount"); 4699 IsDeadCheck("v8::HeapProfiler::GetSnapshotsCount");
4694 return i::HeapProfiler::GetSnapshotsCount(); 4700 return i::HeapProfiler::GetSnapshotsCount();
4695 } 4701 }
4696 4702
4697 4703
4698 const HeapSnapshot* HeapProfiler::GetSnapshot(int index) { 4704 const HeapSnapshot* HeapProfiler::GetSnapshot(int index) {
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
4794 4800
4795 4801
4796 char* HandleScopeImplementer::Iterate(ObjectVisitor* v, char* storage) { 4802 char* HandleScopeImplementer::Iterate(ObjectVisitor* v, char* storage) {
4797 HandleScopeImplementer* thread_local = 4803 HandleScopeImplementer* thread_local =
4798 reinterpret_cast<HandleScopeImplementer*>(storage); 4804 reinterpret_cast<HandleScopeImplementer*>(storage);
4799 thread_local->IterateThis(v); 4805 thread_local->IterateThis(v);
4800 return storage + ArchiveSpacePerThread(); 4806 return storage + ArchiveSpacePerThread();
4801 } 4807 }
4802 4808
4803 } } // namespace v8::internal 4809 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « include/v8-profiler.h ('k') | src/list.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698