From f0bf110448234871e417e2bb448525810f4de2ce Mon Sep 17 00:00:00 2001 From: "svenpanne@chromium.org" Date: Thu, 6 Feb 2014 07:16:41 +0000 Subject: [PATCH] Make LeakSanitizer happy, part 1. Bumped an assembler buffer on the way, it is necessary for some combinations of debugging flags. Note that the allocation profiler still leaks, this is handled in a separate CL. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/152643006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19128 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- test/cctest/test-heap-profiler.cc | 7 +++---- test/cctest/test-log.cc | 2 ++ test/cctest/test-macro-assembler-x64.cc | 2 +- test/cctest/test-parsing.cc | 7 +++++-- test/cctest/test-profile-generator.cc | 30 +++++++++++++++--------------- test/cctest/test-regexp.cc | 1 - test/cctest/test-threads.cc | 6 +++--- 7 files changed, 29 insertions(+), 26 deletions(-) diff --git a/test/cctest/test-heap-profiler.cc b/test/cctest/test-heap-profiler.cc index f6a0931..1caa515 100644 --- a/test/cctest/test-heap-profiler.cc +++ b/test/cctest/test-heap-profiler.cc @@ -1855,10 +1855,9 @@ TEST(WeakGlobalHandle) { CHECK(!HasWeakGlobalHandle()); - v8::Persistent* handle = - new v8::Persistent(env->GetIsolate(), - v8::Object::New(env->GetIsolate())); - handle->SetWeak(handle, PersistentHandleCallback); + v8::Persistent handle(env->GetIsolate(), + v8::Object::New(env->GetIsolate())); + handle.SetWeak(&handle, PersistentHandleCallback); CHECK(HasWeakGlobalHandle()); } diff --git a/test/cctest/test-log.cc b/test/cctest/test-log.cc index 1146994..6531036 100644 --- a/test/cctest/test-log.cc +++ b/test/cctest/test-log.cc @@ -363,6 +363,7 @@ TEST(LogCallbacks) { ObjMethod1); CHECK_NE(NULL, StrNStr(log.start(), ref_data.start(), log.length())); + log.Dispose(); } @@ -420,6 +421,7 @@ TEST(LogAccessorCallbacks) { Prop2Getter); CHECK_NE(NULL, StrNStr(log.start(), prop2_getter_record.start(), log.length())); + log.Dispose(); } diff --git a/test/cctest/test-macro-assembler-x64.cc b/test/cctest/test-macro-assembler-x64.cc index ad8ee84..3daed5b 100644 --- a/test/cctest/test-macro-assembler-x64.cc +++ b/test/cctest/test-macro-assembler-x64.cc @@ -1555,7 +1555,7 @@ TEST(SmiIndex) { // Allocate an executable page of memory. size_t actual_size; byte* buffer = - static_cast(OS::Allocate(Assembler::kMinimalBufferSize * 4, + static_cast(OS::Allocate(Assembler::kMinimalBufferSize * 5, &actual_size, true)); CHECK(buffer); diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc index 303da3b..0106e59 100644 --- a/test/cctest/test-parsing.cc +++ b/test/cctest/test-parsing.cc @@ -244,8 +244,11 @@ TEST(Preparsing) { CHECK_EQ(11, error_location.end_pos); // Should not crash. const char* message = pre_impl->BuildMessage(); - pre_impl->BuildArgs(); + i::Vector args = pre_impl->BuildArgs(); CHECK_GT(strlen(message), 0); + args.Dispose(); + i::DeleteArray(message); + delete error_preparse; } @@ -1019,7 +1022,7 @@ TEST(ScopePositions) { int kSuffixByteLen = i::StrLength(source_data[i].outer_suffix); int kProgramSize = kPrefixLen + kInnerLen + kSuffixLen; int kProgramByteSize = kPrefixByteLen + kInnerByteLen + kSuffixByteLen; - i::Vector program = i::Vector::New(kProgramByteSize + 1); + i::ScopedVector program(kProgramByteSize + 1); i::OS::SNPrintF(program, "%s%s%s", source_data[i].outer_prefix, source_data[i].inner_source, diff --git a/test/cctest/test-profile-generator.cc b/test/cctest/test-profile-generator.cc index e06063d..c3198b1 100644 --- a/test/cctest/test-profile-generator.cc +++ b/test/cctest/test-profile-generator.cc @@ -48,42 +48,42 @@ using i::Vector; TEST(ProfileNodeFindOrAddChild) { ProfileTree tree; - ProfileNode node(&tree, NULL); + ProfileNode* node = tree.root(); CodeEntry entry1(i::Logger::FUNCTION_TAG, "aaa"); - ProfileNode* childNode1 = node.FindOrAddChild(&entry1); + ProfileNode* childNode1 = node->FindOrAddChild(&entry1); CHECK_NE(NULL, childNode1); - CHECK_EQ(childNode1, node.FindOrAddChild(&entry1)); + CHECK_EQ(childNode1, node->FindOrAddChild(&entry1)); CodeEntry entry2(i::Logger::FUNCTION_TAG, "bbb"); - ProfileNode* childNode2 = node.FindOrAddChild(&entry2); + ProfileNode* childNode2 = node->FindOrAddChild(&entry2); CHECK_NE(NULL, childNode2); CHECK_NE(childNode1, childNode2); - CHECK_EQ(childNode1, node.FindOrAddChild(&entry1)); - CHECK_EQ(childNode2, node.FindOrAddChild(&entry2)); + CHECK_EQ(childNode1, node->FindOrAddChild(&entry1)); + CHECK_EQ(childNode2, node->FindOrAddChild(&entry2)); CodeEntry entry3(i::Logger::FUNCTION_TAG, "ccc"); - ProfileNode* childNode3 = node.FindOrAddChild(&entry3); + ProfileNode* childNode3 = node->FindOrAddChild(&entry3); CHECK_NE(NULL, childNode3); CHECK_NE(childNode1, childNode3); CHECK_NE(childNode2, childNode3); - CHECK_EQ(childNode1, node.FindOrAddChild(&entry1)); - CHECK_EQ(childNode2, node.FindOrAddChild(&entry2)); - CHECK_EQ(childNode3, node.FindOrAddChild(&entry3)); + CHECK_EQ(childNode1, node->FindOrAddChild(&entry1)); + CHECK_EQ(childNode2, node->FindOrAddChild(&entry2)); + CHECK_EQ(childNode3, node->FindOrAddChild(&entry3)); } TEST(ProfileNodeFindOrAddChildForSameFunction) { const char* aaa = "aaa"; ProfileTree tree; - ProfileNode node(&tree, NULL); + ProfileNode* node = tree.root(); CodeEntry entry1(i::Logger::FUNCTION_TAG, aaa); - ProfileNode* childNode1 = node.FindOrAddChild(&entry1); + ProfileNode* childNode1 = node->FindOrAddChild(&entry1); CHECK_NE(NULL, childNode1); - CHECK_EQ(childNode1, node.FindOrAddChild(&entry1)); + CHECK_EQ(childNode1, node->FindOrAddChild(&entry1)); // The same function again. CodeEntry entry2(i::Logger::FUNCTION_TAG, aaa); - CHECK_EQ(childNode1, node.FindOrAddChild(&entry2)); + CHECK_EQ(childNode1, node->FindOrAddChild(&entry2)); // Now with a different security token. CodeEntry entry3(i::Logger::FUNCTION_TAG, aaa); - CHECK_EQ(childNode1, node.FindOrAddChild(&entry3)); + CHECK_EQ(childNode1, node->FindOrAddChild(&entry3)); } diff --git a/test/cctest/test-regexp.cc b/test/cctest/test-regexp.cc index aef1e03..d019352 100644 --- a/test/cctest/test-regexp.cc +++ b/test/cctest/test-regexp.cc @@ -539,7 +539,6 @@ static void Execute(const char* input, #ifdef DEBUG if (dot_output) { RegExpEngine::DotPrint(input, node, false); - exit(0); } #endif // DEBUG } diff --git a/test/cctest/test-threads.cc b/test/cctest/test-threads.cc index 41f8b2d..24fb1d1 100644 --- a/test/cctest/test-threads.cc +++ b/test/cctest/test-threads.cc @@ -159,18 +159,18 @@ TEST(ThreadIdValidation) { const int kNThreads = 100; i::List threads(kNThreads); i::List refs(kNThreads); - i::Semaphore* semaphore = new i::Semaphore(0); + i::Semaphore semaphore(0); ThreadIdValidationThread* prev = NULL; for (int i = kNThreads - 1; i >= 0; i--) { ThreadIdValidationThread* newThread = - new ThreadIdValidationThread(prev, &refs, i, semaphore); + new ThreadIdValidationThread(prev, &refs, i, &semaphore); threads.Add(newThread); prev = newThread; refs.Add(i::ThreadId::Invalid()); } prev->Start(); for (int i = 0; i < kNThreads; i++) { - semaphore->Wait(); + semaphore.Wait(); } for (int i = 0; i < kNThreads; i++) { delete threads[i]; -- 2.7.4