From d5a43192e44935605aa9abba6beb31760ef57da0 Mon Sep 17 00:00:00 2001 From: Vladimir Marko Date: Fri, 30 Sep 2022 16:18:02 +0200 Subject: ART: Move `CompiledMethod{,-Storage}` to dex2oat/. Introduce a `CompiledCodeStorage` interface for callbacks to `dex2oat` for storing code produced by `libart-compiler`. Using this new interface, move `CompiledMethodStorage` (this is a misnomer as it's also storing non-method thunk code), `CompiledMethod` and `SwapSpace` to dex2oat/. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing --jit Test: run-gtests.sh Test: testrunner.py --target --optimizing Change-Id: Icb7ffc134d00e53c25bd665d044dd1c98bd49a64 --- compiler/compiled_method.cc | 105 -------------------------------------------- 1 file changed, 105 deletions(-) delete mode 100644 compiler/compiled_method.cc (limited to 'compiler/compiled_method.cc') diff --git a/compiler/compiled_method.cc b/compiler/compiled_method.cc deleted file mode 100644 index 0a0a0057d4..0000000000 --- a/compiler/compiled_method.cc +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "compiled_method.h" - -#include "driver/compiled_method_storage.h" -#include "utils/swap_space.h" - -namespace art { - -CompiledCode::CompiledCode(CompiledMethodStorage* storage, - InstructionSet instruction_set, - const ArrayRef& quick_code) - : storage_(storage), - quick_code_(storage->DeduplicateCode(quick_code)), - packed_fields_(InstructionSetField::Encode(instruction_set)) { -} - -CompiledCode::~CompiledCode() { - GetStorage()->ReleaseCode(quick_code_); -} - -bool CompiledCode::operator==(const CompiledCode& rhs) const { - if (quick_code_ != nullptr) { - if (rhs.quick_code_ == nullptr) { - return false; - } else if (quick_code_->size() != rhs.quick_code_->size()) { - return false; - } else { - return std::equal(quick_code_->begin(), quick_code_->end(), rhs.quick_code_->begin()); - } - } - return (rhs.quick_code_ == nullptr); -} - -size_t CompiledCode::AlignCode(size_t offset) const { - return AlignCode(offset, GetInstructionSet()); -} - -size_t CompiledCode::AlignCode(size_t offset, InstructionSet instruction_set) { - return RoundUp(offset, GetInstructionSetCodeAlignment(instruction_set)); -} - -size_t CompiledCode::GetEntryPointAdjustment() const { - return GetInstructionSetEntryPointAdjustment(GetInstructionSet()); -} - -CompiledMethod::CompiledMethod(CompiledMethodStorage* storage, - InstructionSet instruction_set, - const ArrayRef& quick_code, - const ArrayRef& vmap_table, - const ArrayRef& cfi_info, - const ArrayRef& patches) - : CompiledCode(storage, instruction_set, quick_code), - vmap_table_(storage->DeduplicateVMapTable(vmap_table)), - cfi_info_(storage->DeduplicateCFIInfo(cfi_info)), - patches_(storage->DeduplicateLinkerPatches(patches)) { -} - -CompiledMethod* CompiledMethod::SwapAllocCompiledMethod( - CompiledMethodStorage* storage, - InstructionSet instruction_set, - const ArrayRef& quick_code, - const ArrayRef& vmap_table, - const ArrayRef& cfi_info, - const ArrayRef& patches) { - SwapAllocator alloc(storage->GetSwapSpaceAllocator()); - CompiledMethod* ret = alloc.allocate(1); - alloc.construct(ret, - storage, - instruction_set, - quick_code, - vmap_table, - cfi_info, patches); - return ret; -} - -void CompiledMethod::ReleaseSwapAllocatedCompiledMethod(CompiledMethodStorage* storage, - CompiledMethod* m) { - SwapAllocator alloc(storage->GetSwapSpaceAllocator()); - alloc.destroy(m); - alloc.deallocate(m, 1); -} - -CompiledMethod::~CompiledMethod() { - CompiledMethodStorage* storage = GetStorage(); - storage->ReleaseLinkerPatches(patches_); - storage->ReleaseCFIInfo(cfi_info_); - storage->ReleaseVMapTable(vmap_table_); -} - -} // namespace art -- cgit v1.2.3-59-g8ed1b