1/* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 17#include "ecmascript/ecma_vm.h" 18 19#include "ecmascript/mem/mem_map_allocator.h" 20#include "ecmascript/mem/mem_common.h" 21#include "ecmascript/tests/test_helper.h" 22 23using namespace panda::ecmascript; 24using namespace panda::ecmascript::base; 25 26namespace panda::test { 27 28constexpr size_t HUGE_OBJECT_CAPACITY = 1024_MB; 29 30class MemMapAllocatorTest : public BaseTestWithScope<false> { 31}; 32 33HWTEST_F_L0(MemMapAllocatorTest, GetMemFromList) 34{ 35 MemMap memMap = PageMap(HUGE_OBJECT_CAPACITY, PAGE_PROT_NONE, DEFAULT_REGION_SIZE); 36 PageRelease(memMap.GetMem(), memMap.GetSize()); 37 MemMapFreeList memMapFreeList; 38 memMapFreeList.Initialize(memMap, memMap.GetSize() * 2); 39 40 // From FreeList 41 size_t size1 = 256 * 1024 * 1024; 42 auto mem1 = memMapFreeList.GetMemFromList(size1); 43 EXPECT_EQ(mem1.GetSize(), size1); 44 45 // From FreeList 46 size_t size2 = 512 * 1024 * 1024; 47 auto mem2 = memMapFreeList.GetMemFromList(size2); 48 EXPECT_EQ(mem2.GetSize(), size2); 49 50 // From PageMap 51 size_t size3 = 512 * 1024 * 1024; 52 auto mem3 = memMapFreeList.GetMemFromList(size3); 53 EXPECT_EQ(mem3.GetSize(), size3); 54 55 memMapFreeList.AddMemToList(mem3); 56 memMapFreeList.Finalize(); 57} 58 59} // namespace panda::test 60