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

Side by Side Diff: test/cctest/test-heap-profiler.cc

Issue 2628893003: [api] Mark functions related to object grouping as DEPRECATE_SOON (Closed)
Patch Set: Remove object grouping tests Created 3 years, 11 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 | « test/cctest/test-api.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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 1552 matching lines...) Expand 10 before | Expand all | Expand 10 after
1563 CHECK_EQ(1, ccc->GetChildrenCount()); 1563 CHECK_EQ(1, ccc->GetChildrenCount());
1564 const v8::HeapGraphNode* n_CCC = GetNode( 1564 const v8::HeapGraphNode* n_CCC = GetNode(
1565 ccc, v8::HeapGraphNode::kString, "CCC"); 1565 ccc, v8::HeapGraphNode::kString, "CCC");
1566 CHECK(n_CCC); 1566 CHECK(n_CCC);
1567 1567
1568 CHECK_EQ(aaa, GetProperty(n_AAA, v8::HeapGraphEdge::kInternal, "native")); 1568 CHECK_EQ(aaa, GetProperty(n_AAA, v8::HeapGraphEdge::kInternal, "native"));
1569 CHECK_EQ(aaa, GetProperty(n_BBB, v8::HeapGraphEdge::kInternal, "native")); 1569 CHECK_EQ(aaa, GetProperty(n_BBB, v8::HeapGraphEdge::kInternal, "native"));
1570 CHECK_EQ(ccc, GetProperty(n_CCC, v8::HeapGraphEdge::kInternal, "native")); 1570 CHECK_EQ(ccc, GetProperty(n_CCC, v8::HeapGraphEdge::kInternal, "native"));
1571 } 1571 }
1572 1572
1573
1574 class GraphWithImplicitRefs {
1575 public:
1576 static const int kObjectsCount = 4;
1577 explicit GraphWithImplicitRefs(LocalContext* env) {
1578 CHECK(!instance_);
1579 instance_ = this;
1580 isolate_ = (*env)->GetIsolate();
1581 for (int i = 0; i < kObjectsCount; i++) {
1582 objects_[i].Reset(isolate_, v8::Object::New(isolate_));
1583 }
1584 (*env)
1585 ->Global()
1586 ->Set(isolate_->GetCurrentContext(), v8_str("root_object"),
1587 v8::Local<v8::Value>::New(isolate_, objects_[0]))
1588 .FromJust();
1589 }
1590 ~GraphWithImplicitRefs() {
1591 instance_ = NULL;
1592 }
1593
1594 static void gcPrologue(v8::Isolate* isolate, v8::GCType type,
1595 v8::GCCallbackFlags flags) {
1596 instance_->AddImplicitReferences();
1597 }
1598
1599 private:
1600 void AddImplicitReferences() {
1601 // 0 -> 1
1602 isolate_->SetObjectGroupId(objects_[0],
1603 v8::UniqueId(1));
1604 isolate_->SetReferenceFromGroup(
1605 v8::UniqueId(1), objects_[1]);
1606 // Adding two more references: 1 -> 2, 1 -> 3
1607 isolate_->SetReference(objects_[1].As<v8::Object>(),
1608 objects_[2]);
1609 isolate_->SetReference(objects_[1].As<v8::Object>(),
1610 objects_[3]);
1611 }
1612
1613 v8::Persistent<v8::Value> objects_[kObjectsCount];
1614 static GraphWithImplicitRefs* instance_;
1615 v8::Isolate* isolate_;
1616 };
1617
1618 GraphWithImplicitRefs* GraphWithImplicitRefs::instance_ = NULL;
1619
1620
1621 TEST(HeapSnapshotImplicitReferences) {
1622 LocalContext env;
1623 v8::HandleScope scope(env->GetIsolate());
1624 v8::HeapProfiler* heap_profiler = env->GetIsolate()->GetHeapProfiler();
1625
1626 GraphWithImplicitRefs graph(&env);
1627 env->GetIsolate()->AddGCPrologueCallback(&GraphWithImplicitRefs::gcPrologue);
1628
1629 const v8::HeapSnapshot* snapshot = heap_profiler->TakeHeapSnapshot();
1630 CHECK(ValidateSnapshot(snapshot));
1631
1632 const v8::HeapGraphNode* global_object = GetGlobalObject(snapshot);
1633 const v8::HeapGraphNode* obj0 = GetProperty(
1634 global_object, v8::HeapGraphEdge::kProperty, "root_object");
1635 CHECK(obj0);
1636 CHECK_EQ(v8::HeapGraphNode::kObject, obj0->GetType());
1637 const v8::HeapGraphNode* obj1 = GetProperty(
1638 obj0, v8::HeapGraphEdge::kInternal, "native");
1639 CHECK(obj1);
1640 int implicit_targets_count = 0;
1641 for (int i = 0, count = obj1->GetChildrenCount(); i < count; ++i) {
1642 const v8::HeapGraphEdge* prop = obj1->GetChild(i);
1643 v8::String::Utf8Value prop_name(prop->GetName());
1644 if (prop->GetType() == v8::HeapGraphEdge::kInternal &&
1645 strcmp("native", *prop_name) == 0) {
1646 ++implicit_targets_count;
1647 }
1648 }
1649 CHECK_EQ(2, implicit_targets_count);
1650 env->GetIsolate()->RemoveGCPrologueCallback(
1651 &GraphWithImplicitRefs::gcPrologue);
1652 }
1653
1654
1655 TEST(DeleteAllHeapSnapshots) { 1573 TEST(DeleteAllHeapSnapshots) {
1656 LocalContext env; 1574 LocalContext env;
1657 v8::HandleScope scope(env->GetIsolate()); 1575 v8::HandleScope scope(env->GetIsolate());
1658 v8::HeapProfiler* heap_profiler = env->GetIsolate()->GetHeapProfiler(); 1576 v8::HeapProfiler* heap_profiler = env->GetIsolate()->GetHeapProfiler();
1659 1577
1660 CHECK_EQ(0, heap_profiler->GetSnapshotCount()); 1578 CHECK_EQ(0, heap_profiler->GetSnapshotCount());
1661 heap_profiler->DeleteAllHeapSnapshots(); 1579 heap_profiler->DeleteAllHeapSnapshots();
1662 CHECK_EQ(0, heap_profiler->GetSnapshotCount()); 1580 CHECK_EQ(0, heap_profiler->GetSnapshotCount());
1663 CHECK(heap_profiler->TakeHeapSnapshot()); 1581 CHECK(heap_profiler->TakeHeapSnapshot());
1664 CHECK_EQ(1, heap_profiler->GetSnapshotCount()); 1582 CHECK_EQ(1, heap_profiler->GetSnapshotCount());
(...skipping 1437 matching lines...) Expand 10 before | Expand all | Expand 10 after
3102 " a[i] = i;\n" 3020 " a[i] = i;\n"
3103 " for (var i = 0; i < 3; ++i)\n" 3021 " for (var i = 0; i < 3; ++i)\n"
3104 " a.shift();\n" 3022 " a.shift();\n"
3105 "}\n"); 3023 "}\n");
3106 3024
3107 CcTest::CollectGarbage(v8::internal::NEW_SPACE); 3025 CcTest::CollectGarbage(v8::internal::NEW_SPACE);
3108 // Should not crash. 3026 // Should not crash.
3109 3027
3110 heap_profiler->StopSamplingHeapProfiler(); 3028 heap_profiler->StopSamplingHeapProfiler();
3111 } 3029 }
OLDNEW
« no previous file with comments | « test/cctest/test-api.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698