From 9d07e3d128ccfa0ef7670feadd424a825e447d1d Mon Sep 17 00:00:00 2001 From: Vladimir Marko Date: Thu, 31 Mar 2016 12:02:28 +0100 Subject: Clean up OatQuickMethodHeader after Quick removal. This reduces the size of the pre-header by 8 bytes, reducing oat file size and mmapped .text section size. The memory needed to store a CompiledMethod by dex2oat is also reduced, for 32-bit dex2oat by 8B and for 64-bit dex2oat by 16B. The aosp_flounder-userdebug 32-bit and 64-bit boot.oat are each about 1.1MiB smaller. Disable the broken StubTest.IMT, b/27991555 . Change-Id: I05fe45c28c8ffb7a0fa8b1117b969786748b1039 --- compiler/gc_map_builder.h | 107 ---------------------------------------------- 1 file changed, 107 deletions(-) delete mode 100644 compiler/gc_map_builder.h (limited to 'compiler/gc_map_builder.h') diff --git a/compiler/gc_map_builder.h b/compiler/gc_map_builder.h deleted file mode 100644 index 2ef7f1a659..0000000000 --- a/compiler/gc_map_builder.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (C) 2014 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. - */ - -#ifndef ART_COMPILER_GC_MAP_BUILDER_H_ -#define ART_COMPILER_GC_MAP_BUILDER_H_ - -#include - -#include "base/bit_utils.h" -#include "gc_map.h" - -namespace art { - -class GcMapBuilder { - public: - template - GcMapBuilder(Vector* table, size_t entries, uint32_t max_native_offset, - size_t references_width) - : entries_(entries), references_width_(entries != 0u ? references_width : 0u), - native_offset_width_(entries != 0 && max_native_offset != 0 - ? sizeof(max_native_offset) - CLZ(max_native_offset) / 8u - : 0u), - in_use_(entries) { - static_assert(std::is_same::value, "Invalid value type"); - - // Resize table and set up header. - table->resize((EntryWidth() * entries) + sizeof(uint32_t)); - table_ = table->data(); - CHECK_LT(native_offset_width_, 1U << 3); - (*table)[0] = native_offset_width_ & 7; - CHECK_LT(references_width_, 1U << 13); - (*table)[0] |= (references_width_ << 3) & 0xFF; - (*table)[1] = (references_width_ >> 5) & 0xFF; - CHECK_LT(entries, 1U << 16); - (*table)[2] = entries & 0xFF; - (*table)[3] = (entries >> 8) & 0xFF; - } - - void AddEntry(uint32_t native_offset, const uint8_t* references) { - size_t table_index = TableIndex(native_offset); - while (in_use_[table_index]) { - table_index = (table_index + 1) % entries_; - } - in_use_[table_index] = true; - SetCodeOffset(table_index, native_offset); - DCHECK_EQ(native_offset, GetCodeOffset(table_index)); - SetReferences(table_index, references); - } - - private: - size_t TableIndex(uint32_t native_offset) { - return NativePcOffsetToReferenceMap::Hash(native_offset) % entries_; - } - - uint32_t GetCodeOffset(size_t table_index) { - uint32_t native_offset = 0; - size_t table_offset = (table_index * EntryWidth()) + sizeof(uint32_t); - for (size_t i = 0; i < native_offset_width_; i++) { - native_offset |= table_[table_offset + i] << (i * 8); - } - return native_offset; - } - - void SetCodeOffset(size_t table_index, uint32_t native_offset) { - size_t table_offset = (table_index * EntryWidth()) + sizeof(uint32_t); - for (size_t i = 0; i < native_offset_width_; i++) { - table_[table_offset + i] = (native_offset >> (i * 8)) & 0xFF; - } - } - - void SetReferences(size_t table_index, const uint8_t* references) { - size_t table_offset = (table_index * EntryWidth()) + sizeof(uint32_t); - memcpy(&table_[table_offset + native_offset_width_], references, references_width_); - } - - size_t EntryWidth() const { - return native_offset_width_ + references_width_; - } - - // Number of entries in the table. - const size_t entries_; - // Number of bytes used to encode the reference bitmap. - const size_t references_width_; - // Number of bytes used to encode a native offset. - const size_t native_offset_width_; - // Entries that are in use. - std::vector in_use_; - // The table we're building. - uint8_t* table_; -}; - -} // namespace art - -#endif // ART_COMPILER_GC_MAP_BUILDER_H_ -- cgit v1.2.3-59-g8ed1b