From 2ad36975109b09b45d2ae1c55c23b03933d1470e Mon Sep 17 00:00:00 2001 From: jochen Date: Tue, 8 Dec 2015 10:41:54 -0800 Subject: [PATCH] Remove usage of deprecated APIs from heap profiler tests BUG=v8:4134 R=vogelheim@chromium.org LOG=n NOTRY=true NOPRESUBMIT=true Review URL: https://codereview.chromium.org/1504093003 Cr-Commit-Position: refs/heads/master@{#32677} --- test/cctest/test-heap-profiler.cc | 191 +++++++++++++++++++----------- 1 file changed, 122 insertions(+), 69 deletions(-) diff --git a/test/cctest/test-heap-profiler.cc b/test/cctest/test-heap-profiler.cc index 2541696fc0..fc1a8ab340 100644 --- a/test/cctest/test-heap-profiler.cc +++ b/test/cctest/test-heap-profiler.cc @@ -27,6 +27,9 @@ // // Tests for heap profiler +// TODO(jochen): Remove this after the setting is turned on globally. +#define V8_IMMINENT_DEPRECATION_WARNINGS + #include #include "src/v8.h" @@ -246,8 +249,7 @@ TEST(BoundFunctionInSnapshot) { const v8::HeapGraphNode* f = GetProperty(global, v8::HeapGraphEdge::kProperty, "boundFunction"); CHECK(f); - CHECK(v8::String::NewFromUtf8(env->GetIsolate(), "native_bind") - ->Equals(f->GetName())); + CHECK(v8_str("native_bind")->Equals(env.local(), f->GetName()).FromJust()); const v8::HeapGraphNode* bindings = GetProperty(f, v8::HeapGraphEdge::kInternal, "bindings"); CHECK(bindings); @@ -427,8 +429,8 @@ TEST(HeapSnapshotConsString) { v8::ObjectTemplate::New(isolate); global_template->SetInternalFieldCount(1); LocalContext env(NULL, global_template); - v8::Handle global_proxy = env->Global(); - v8::Handle global = global_proxy->GetPrototype().As(); + v8::Local global_proxy = env->Global(); + v8::Local global = global_proxy->GetPrototype().As(); CHECK_EQ(1, global->InternalFieldCount()); i::Factory* factory = CcTest::i_isolate()->factory(); @@ -474,11 +476,11 @@ TEST(HeapSnapshotSymbol) { GetProperty(global, v8::HeapGraphEdge::kProperty, "a"); CHECK(a); CHECK_EQ(a->GetType(), v8::HeapGraphNode::kSymbol); - CHECK(v8_str("symbol")->Equals(a->GetName())); + CHECK(v8_str("symbol")->Equals(env.local(), a->GetName()).FromJust()); const v8::HeapGraphNode* name = GetProperty(a, v8::HeapGraphEdge::kInternal, "name"); CHECK(name); - CHECK(v8_str("mySymbol")->Equals(name->GetName())); + CHECK(v8_str("mySymbol")->Equals(env.local(), name->GetName()).FromJust()); } @@ -539,7 +541,7 @@ TEST(HeapSnapshotWeakCollection) { GetProperty(global, v8::HeapGraphEdge::kProperty, "ws"); CHECK(ws); CHECK_EQ(v8::HeapGraphNode::kObject, ws->GetType()); - CHECK(v8_str("WeakSet")->Equals(ws->GetName())); + CHECK(v8_str("WeakSet")->Equals(env.local(), ws->GetName()).FromJust()); const v8::HeapGraphNode* ws_table = GetProperty(ws, v8::HeapGraphEdge::kInternal, "table"); @@ -563,7 +565,7 @@ TEST(HeapSnapshotWeakCollection) { GetProperty(global, v8::HeapGraphEdge::kProperty, "wm"); CHECK(wm); CHECK_EQ(v8::HeapGraphNode::kObject, wm->GetType()); - CHECK(v8_str("WeakMap")->Equals(wm->GetName())); + CHECK(v8_str("WeakMap")->Equals(env.local(), wm->GetName()).FromJust()); const v8::HeapGraphNode* wm_table = GetProperty(wm, v8::HeapGraphEdge::kInternal, "table"); @@ -612,7 +614,7 @@ TEST(HeapSnapshotCollection) { GetProperty(global, v8::HeapGraphEdge::kProperty, "set"); CHECK(set); CHECK_EQ(v8::HeapGraphNode::kObject, set->GetType()); - CHECK(v8_str("Set")->Equals(set->GetName())); + CHECK(v8_str("Set")->Equals(env.local(), set->GetName()).FromJust()); const v8::HeapGraphNode* set_table = GetProperty(set, v8::HeapGraphEdge::kInternal, "table"); @@ -636,7 +638,7 @@ TEST(HeapSnapshotCollection) { GetProperty(global, v8::HeapGraphEdge::kProperty, "map"); CHECK(map); CHECK_EQ(v8::HeapGraphNode::kObject, map->GetType()); - CHECK(v8_str("Map")->Equals(map->GetName())); + CHECK(v8_str("Map")->Equals(env.local(), map->GetName()).FromJust()); const v8::HeapGraphNode* map_table = GetProperty(map, v8::HeapGraphEdge::kInternal, "table"); @@ -665,8 +667,8 @@ TEST(HeapSnapshotInternalReferences) { v8::ObjectTemplate::New(isolate); global_template->SetInternalFieldCount(2); LocalContext env(NULL, global_template); - v8::Handle global_proxy = env->Global(); - v8::Handle global = global_proxy->GetPrototype().As(); + v8::Local global_proxy = env->Global(); + v8::Local global = global_proxy->GetPrototype().As(); CHECK_EQ(2, global->InternalFieldCount()); v8::Local obj = v8::Object::New(isolate); global->SetInternalField(0, v8_num(17)); @@ -915,19 +917,26 @@ TEST(HeapSnapshotJSONSerialization) { // Verify that snapshot string is valid JSON. OneByteResource* json_res = new OneByteResource(json); v8::Local json_string = - v8::String::NewExternal(env->GetIsolate(), json_res); - env->Global()->Set(v8_str("json_snapshot"), json_string); + v8::String::NewExternalOneByte(env->GetIsolate(), json_res) + .ToLocalChecked(); + env->Global() + ->Set(env.local(), v8_str("json_snapshot"), json_string) + .FromJust(); v8::Local snapshot_parse_result = CompileRun( "var parsed = JSON.parse(json_snapshot); true;"); CHECK(!snapshot_parse_result.IsEmpty()); // Verify that snapshot object has required fields. v8::Local parsed_snapshot = - env->Global()->Get(v8_str("parsed"))->ToObject(isolate); - CHECK(parsed_snapshot->Has(v8_str("snapshot"))); - CHECK(parsed_snapshot->Has(v8_str("nodes"))); - CHECK(parsed_snapshot->Has(v8_str("edges"))); - CHECK(parsed_snapshot->Has(v8_str("strings"))); + env->Global() + ->Get(env.local(), v8_str("parsed")) + .ToLocalChecked() + ->ToObject(env.local()) + .ToLocalChecked(); + CHECK(parsed_snapshot->Has(env.local(), v8_str("snapshot")).FromJust()); + CHECK(parsed_snapshot->Has(env.local(), v8_str("nodes")).FromJust()); + CHECK(parsed_snapshot->Has(env.local(), v8_str("edges")).FromJust()); + CHECK(parsed_snapshot->Has(env.local(), v8_str("strings")).FromJust()); // Get node and edge "member" offsets. v8::Local meta_analysis_result = CompileRun( @@ -978,19 +987,32 @@ TEST(HeapSnapshotJSONSerialization) { " \"x\", property_type)," " \"s\", property_type)"); CHECK(!string_obj_pos_val.IsEmpty()); - int string_obj_pos = - static_cast(string_obj_pos_val->ToNumber(isolate)->Value()); + int string_obj_pos = static_cast( + string_obj_pos_val->ToNumber(env.local()).ToLocalChecked()->Value()); v8::Local nodes_array = - parsed_snapshot->Get(v8_str("nodes"))->ToObject(isolate); - int string_index = static_cast( - nodes_array->Get(string_obj_pos + 1)->ToNumber(isolate)->Value()); + parsed_snapshot->Get(env.local(), v8_str("nodes")) + .ToLocalChecked() + ->ToObject(env.local()) + .ToLocalChecked(); + int string_index = + static_cast(nodes_array->Get(env.local(), string_obj_pos + 1) + .ToLocalChecked() + ->ToNumber(env.local()) + .ToLocalChecked() + ->Value()); CHECK_GT(string_index, 0); v8::Local strings_array = - parsed_snapshot->Get(v8_str("strings"))->ToObject(isolate); - v8::Local string = - strings_array->Get(string_index)->ToString(isolate); - v8::Local ref_string = - CompileRun(STRING_LITERAL_FOR_TEST)->ToString(isolate); + parsed_snapshot->Get(env.local(), v8_str("strings")) + .ToLocalChecked() + ->ToObject(env.local()) + .ToLocalChecked(); + v8::Local string = strings_array->Get(env.local(), string_index) + .ToLocalChecked() + ->ToString(env.local()) + .ToLocalChecked(); + v8::Local ref_string = CompileRun(STRING_LITERAL_FOR_TEST) + ->ToString(env.local()) + .ToLocalChecked(); #undef STRING_LITERAL_FOR_TEST CHECK_EQ(0, strcmp(*v8::String::Utf8Value(ref_string), *v8::String::Utf8Value(string))); @@ -1189,7 +1211,7 @@ TEST(HeapSnapshotObjectsStats) { v8::Local array = v8::Array::New(env->GetIsolate()); CHECK_EQ(0u, array->Length()); // Force array's buffer allocation. - array->Set(2, v8_num(7)); + array->Set(env.local(), 2, v8_num(7)).FromJust(); uint32_t entries_size; { @@ -1204,7 +1226,7 @@ TEST(HeapSnapshotObjectsStats) { } for (int i = 0; i < 100; ++i) - array->Set(i, v8_num(i)); + array->Set(env.local(), i, v8_num(i)).FromJust(); { // Single chunk of data with 1 entry expected in update. @@ -1229,7 +1251,7 @@ TEST(HeapObjectIds) { v8::HeapProfiler* heap_profiler = env->GetIsolate()->GetHeapProfiler(); const int kLength = 10; - v8::Handle objects[kLength]; + v8::Local objects[kLength]; v8::SnapshotObjectId ids[kLength]; heap_profiler->StartTrackingHeapObjects(false); @@ -1251,15 +1273,15 @@ TEST(HeapObjectIds) { for (int i = 0; i < kLength; i++) { v8::SnapshotObjectId id = heap_profiler->GetObjectId(objects[i]); CHECK_EQ(ids[i], id); - v8::Handle obj = heap_profiler->FindObjectById(ids[i]); - CHECK(objects[i]->Equals(obj)); + v8::Local obj = heap_profiler->FindObjectById(ids[i]); + CHECK(objects[i]->Equals(env.local(), obj).FromJust()); } heap_profiler->ClearObjectIds(); for (int i = 0; i < kLength; i++) { v8::SnapshotObjectId id = heap_profiler->GetObjectId(objects[i]); CHECK_EQ(v8::HeapProfiler::kUnknownObjectId, id); - v8::Handle obj = heap_profiler->FindObjectById(ids[i]); + v8::Local obj = heap_profiler->FindObjectById(ids[i]); CHECK(obj.IsEmpty()); } } @@ -1307,8 +1329,8 @@ TEST(HeapSnapshotGetSnapshotObjectId) { GetProperty(global, v8::HeapGraphEdge::kProperty, "globalObject"); CHECK(global_object); - v8::Local globalObjectHandle = env->Global()->Get( - v8::String::NewFromUtf8(env->GetIsolate(), "globalObject")); + v8::Local globalObjectHandle = + env->Global()->Get(env.local(), v8_str("globalObject")).ToLocalChecked(); CHECK(!globalObjectHandle.IsEmpty()); CHECK(globalObjectHandle->IsObject()); @@ -1411,7 +1433,7 @@ class TestRetainedObjectInfo : public v8::RetainedObjectInfo { bool disposed() { return disposed_; } static v8::RetainedObjectInfo* WrapperInfoCallback( - uint16_t class_id, v8::Handle wrapper) { + uint16_t class_id, v8::Local wrapper) { if (class_id == 1) { if (wrapper->IsString()) { v8::String::Utf8Value utf8(wrapper); @@ -1531,8 +1553,11 @@ class GraphWithImplicitRefs { for (int i = 0; i < kObjectsCount; i++) { objects_[i].Reset(isolate_, v8::Object::New(isolate_)); } - (*env)->Global()->Set(v8_str("root_object"), - v8::Local::New(isolate_, objects_[0])); + (*env) + ->Global() + ->Set(isolate_->GetCurrentContext(), v8_str("root_object"), + v8::Local::New(isolate_, objects_[0])) + .FromJust(); } ~GraphWithImplicitRefs() { instance_ = NULL; @@ -1665,7 +1690,7 @@ TEST(DeleteHeapSnapshot) { class NameResolver : public v8::HeapProfiler::ObjectNameResolver { public: - virtual const char* GetName(v8::Handle object) { + virtual const char* GetName(v8::Local object) { return "Global object name"; } }; @@ -1758,17 +1783,21 @@ TEST(GetHeapValueForNode) { const v8::HeapGraphNode* obj = GetProperty( global, v8::HeapGraphEdge::kProperty, "a"); CHECK(heap_profiler->FindObjectById(obj->GetId())->IsObject()); - v8::Local js_obj = js_global->Get(v8_str("a")).As(); + v8::Local js_obj = js_global->Get(env.local(), v8_str("a")) + .ToLocalChecked() + .As(); CHECK(js_obj == heap_profiler->FindObjectById(obj->GetId())); const v8::HeapGraphNode* s_prop = GetProperty(obj, v8::HeapGraphEdge::kProperty, "s_prop"); - v8::Local js_s_prop = - js_obj->Get(v8_str("s_prop")).As(); + v8::Local js_s_prop = js_obj->Get(env.local(), v8_str("s_prop")) + .ToLocalChecked() + .As(); CHECK(js_s_prop == heap_profiler->FindObjectById(s_prop->GetId())); const v8::HeapGraphNode* n_prop = GetProperty(obj, v8::HeapGraphEdge::kProperty, "n_prop"); - v8::Local js_n_prop = - js_obj->Get(v8_str("n_prop")).As(); + v8::Local js_n_prop = js_obj->Get(env.local(), v8_str("n_prop")) + .ToLocalChecked() + .As(); CHECK(js_n_prop == heap_profiler->FindObjectById(n_prop->GetId())); } @@ -1829,32 +1858,44 @@ TEST(GetConstructorName) { "obj6.constructor = 6;"); v8::Local js_global = env->Global()->GetPrototype().As(); - v8::Local obj1 = js_global->Get(v8_str("obj1")).As(); + v8::Local obj1 = js_global->Get(env.local(), v8_str("obj1")) + .ToLocalChecked() + .As(); i::Handle js_obj1 = i::Handle::cast(v8::Utils::OpenHandle(*obj1)); CHECK_EQ(0, StringCmp( "Constructor1", i::V8HeapExplorer::GetConstructorName(*js_obj1))); - v8::Local obj2 = js_global->Get(v8_str("obj2")).As(); + v8::Local obj2 = js_global->Get(env.local(), v8_str("obj2")) + .ToLocalChecked() + .As(); i::Handle js_obj2 = i::Handle::cast(v8::Utils::OpenHandle(*obj2)); CHECK_EQ(0, StringCmp( "Constructor2", i::V8HeapExplorer::GetConstructorName(*js_obj2))); - v8::Local obj3 = js_global->Get(v8_str("obj3")).As(); + v8::Local obj3 = js_global->Get(env.local(), v8_str("obj3")) + .ToLocalChecked() + .As(); i::Handle js_obj3 = i::Handle::cast(v8::Utils::OpenHandle(*obj3)); CHECK_EQ(0, StringCmp("Constructor3", i::V8HeapExplorer::GetConstructorName(*js_obj3))); - v8::Local obj4 = js_global->Get(v8_str("obj4")).As(); + v8::Local obj4 = js_global->Get(env.local(), v8_str("obj4")) + .ToLocalChecked() + .As(); i::Handle js_obj4 = i::Handle::cast(v8::Utils::OpenHandle(*obj4)); CHECK_EQ(0, StringCmp("Constructor4", i::V8HeapExplorer::GetConstructorName(*js_obj4))); - v8::Local obj5 = js_global->Get(v8_str("obj5")).As(); + v8::Local obj5 = js_global->Get(env.local(), v8_str("obj5")) + .ToLocalChecked() + .As(); i::Handle js_obj5 = i::Handle::cast(v8::Utils::OpenHandle(*obj5)); CHECK_EQ(0, StringCmp( "Object", i::V8HeapExplorer::GetConstructorName(*js_obj5))); - v8::Local obj6 = js_global->Get(v8_str("obj6")).As(); + v8::Local obj6 = js_global->Get(env.local(), v8_str("obj6")) + .ToLocalChecked() + .As(); i::Handle js_obj6 = i::Handle::cast(v8::Utils::OpenHandle(*obj6)); CHECK_EQ(0, StringCmp( @@ -1916,7 +1957,9 @@ TEST(FastCaseRedefinedAccessors) { v8::Local js_global = env->Global()->GetPrototype().As(); i::Handle js_obj1 = - v8::Utils::OpenHandle(*js_global->Get(v8_str("obj1")).As()); + v8::Utils::OpenHandle(*js_global->Get(env.local(), v8_str("obj1")) + .ToLocalChecked() + .As()); USE(js_obj1); const v8::HeapSnapshot* snapshot = heap_profiler->TakeHeapSnapshot(); @@ -1986,10 +2029,11 @@ TEST(HiddenPropertiesFastCase) { GetProperty(c, v8::HeapGraphEdge::kProperty, ""); CHECK(!hidden_props); - v8::Handle cHandle = - env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "c")); + v8::Local cHandle = + env->Global()->Get(env.local(), v8_str("c")).ToLocalChecked(); CHECK(!cHandle.IsEmpty() && cHandle->IsObject()); - cHandle->ToObject(isolate) + cHandle->ToObject(env.local()) + .ToLocalChecked() ->SetPrivate(env.local(), v8::Private::ForApi(env->GetIsolate(), v8_str("key")), v8_str("val")) @@ -2287,18 +2331,27 @@ TEST(AllocationSitesAreVisible) { CHECK_EQ(v8::internal::FixedArray::SizeFor(3), static_cast(elements->GetShallowSize())); - v8::Handle array_val = + v8::Local array_val = heap_profiler->FindObjectById(transition_info->GetId()); CHECK(array_val->IsArray()); - v8::Handle array = v8::Handle::Cast(array_val); + v8::Local array = v8::Local::Cast(array_val); // Verify the array is "a" in the code above. CHECK_EQ(3u, array->Length()); CHECK(v8::Integer::New(isolate, 3) - ->Equals(array->Get(v8::Integer::New(isolate, 0)))); + ->Equals(env.local(), + array->Get(env.local(), v8::Integer::New(isolate, 0)) + .ToLocalChecked()) + .FromJust()); CHECK(v8::Integer::New(isolate, 2) - ->Equals(array->Get(v8::Integer::New(isolate, 1)))); + ->Equals(env.local(), + array->Get(env.local(), v8::Integer::New(isolate, 1)) + .ToLocalChecked()) + .FromJust()); CHECK(v8::Integer::New(isolate, 1) - ->Equals(array->Get(v8::Integer::New(isolate, 2)))); + ->Equals(env.local(), + array->Get(env.local(), v8::Integer::New(isolate, 2)) + .ToLocalChecked()) + .FromJust()); } @@ -2582,7 +2635,7 @@ TEST(TrackV8ApiAllocation) { const char* names[] = { "(V8 API)" }; heap_profiler->StartTrackingHeapObjects(true); - v8::Handle o1 = v8::Object::New(env->GetIsolate()); + v8::Local o1 = v8::Object::New(env->GetIsolate()); o1->Clone(); AllocationTracker* tracker = @@ -2656,11 +2709,11 @@ TEST(ArrayBufferSharedBackingStore) { v8::Local ab2 = v8::ArrayBuffer::New(isolate, data, ab_contents.ByteLength()); CHECK(ab2->IsExternal()); - env->Global()->Set(v8_str("ab1"), ab); - env->Global()->Set(v8_str("ab2"), ab2); + env->Global()->Set(env.local(), v8_str("ab1"), ab).FromJust(); + env->Global()->Set(env.local(), v8_str("ab2"), ab2).FromJust(); - v8::Handle result = CompileRun("ab2.byteLength"); - CHECK_EQ(1024, result->Int32Value()); + v8::Local result = CompileRun("ab2.byteLength"); + CHECK_EQ(1024, result->Int32Value(env.local()).FromJust()); const v8::HeapSnapshot* snapshot = heap_profiler->TakeHeapSnapshot(); CHECK(ValidateSnapshot(snapshot)); @@ -2687,13 +2740,13 @@ TEST(BoxObject) { v8::Isolate* isolate = CcTest::isolate(); v8::HandleScope scope(isolate); LocalContext env; - v8::Handle global_proxy = env->Global(); - v8::Handle global = global_proxy->GetPrototype().As(); + v8::Local global_proxy = env->Global(); + v8::Local global = global_proxy->GetPrototype().As(); i::Factory* factory = CcTest::i_isolate()->factory(); i::Handle string = factory->NewStringFromStaticChars("string"); i::Handle box = factory->NewBox(string); - global->Set(0, v8::ToApiHandle(box)); + global->Set(env.local(), 0, v8::ToApiHandle(box)).FromJust(); v8::HeapProfiler* heap_profiler = isolate->GetHeapProfiler(); const v8::HeapSnapshot* snapshot = heap_profiler->TakeHeapSnapshot();