// Copyright 2015 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "src/heap/code-object-registry.h" #include "testing/gtest/include/gtest/gtest.h" namespace v8 { namespace internal { TEST(CodeObjectRegistry, RegisterAlreadyExistingObjectsAndContains) { CodeObjectRegistry registry; const int elements = 10; const int offset = 100; for (int i = 0; i < elements; i++) { registry.RegisterNewlyAllocatedCodeObject(i * offset); } for (int i = 0; i < elements; i++) { CHECK(registry.Contains(i * offset)); } } TEST(CodeObjectRegistry, RegisterNewlyAllocatedObjectsAndContains) { CodeObjectRegistry registry; const int elements = 10; const int offset = 100; for (int i = 0; i < elements; i++) { registry.RegisterNewlyAllocatedCodeObject(i * offset); } for (int i = 0; i < elements; i++) { CHECK(registry.Contains(i * offset)); } } TEST(CodeObjectRegistry, FindAlreadyExistingObjects) { CodeObjectRegistry registry; const int elements = 10; const int offset = 100; const int inner = 2; for (int i = 1; i <= elements; i++) { registry.RegisterNewlyAllocatedCodeObject(i * offset); } for (int i = 1; i <= elements; i++) { for (int j = 0; j < inner; j++) { CHECK_EQ(registry.GetCodeObjectStartFromInnerAddress(i * offset + j), i * offset); } } } TEST(CodeObjectRegistry, FindNewlyAllocatedObjects) { CodeObjectRegistry registry; const int elements = 10; const int offset = 100; const int inner = 2; for (int i = 1; i <= elements; i++) { registry.RegisterNewlyAllocatedCodeObject(i * offset); } for (int i = 1; i <= elements; i++) { for (int j = 0; j < inner; j++) { CHECK_EQ(registry.GetCodeObjectStartFromInnerAddress(i * offset + j), i * offset); } } } } // namespace internal } // namespace v8