diff options
author | 2022-09-30 16:18:02 +0200 | |
---|---|---|
committer | 2022-10-10 08:23:48 +0000 | |
commit | d5a43192e44935605aa9abba6beb31760ef57da0 (patch) | |
tree | dab5be3c5a9f93c3197e7d759f8b0970a404f0db /compiler/compiled_method.cc | |
parent | 81f1cc9ed5ee68ba3bf5163b78151d09ec560e77 (diff) |
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
Diffstat (limited to 'compiler/compiled_method.cc')
-rw-r--r-- | compiler/compiled_method.cc | 105 |
1 files changed, 0 insertions, 105 deletions
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<const uint8_t>& 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<const uint8_t>& quick_code, - const ArrayRef<const uint8_t>& vmap_table, - const ArrayRef<const uint8_t>& cfi_info, - const ArrayRef<const linker::LinkerPatch>& 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<const uint8_t>& quick_code, - const ArrayRef<const uint8_t>& vmap_table, - const ArrayRef<const uint8_t>& cfi_info, - const ArrayRef<const linker::LinkerPatch>& patches) { - SwapAllocator<CompiledMethod> 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<CompiledMethod> 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 |