1/* 2 * Copyright (C) 2018 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#if ASM_DEFINE_INCLUDE_DEPENDENCIES 18#include "mirror/class.h" 19#include "subtype_check.h" 20#endif 21 22ASM_DEFINE(MIRROR_CLASS_ACCESS_FLAGS_OFFSET, art::mirror::Class::AccessFlagsOffset().Int32Value()) 23ASM_DEFINE(MIRROR_CLASS_CLINIT_THREAD_ID_OFFSET, 24 art::mirror::Class::ClinitThreadIdOffset().Int32Value()) 25ASM_DEFINE(MIRROR_CLASS_COMPONENT_TYPE_OFFSET, 26 art::mirror::Class::ComponentTypeOffset().Int32Value()) 27ASM_DEFINE(MIRROR_CLASS_DEX_CACHE_OFFSET, art::mirror::Class::DexCacheOffset().Int32Value()) 28ASM_DEFINE(MIRROR_CLASS_IF_TABLE_OFFSET, art::mirror::Class::IfTableOffset().Int32Value()) 29ASM_DEFINE(MIRROR_CLASS_IMT_PTR_OFFSET_32, 30 art::mirror::Class::ImtPtrOffset(art::PointerSize::k32).Int32Value()) 31ASM_DEFINE(MIRROR_CLASS_IMT_PTR_OFFSET_64, 32 art::mirror::Class::ImtPtrOffset(art::PointerSize::k64).Int32Value()) 33ASM_DEFINE(MIRROR_CLASS_OBJECT_PRIMITIVE_TYPE_OFFSET, 34 art::mirror::Class::PrimitiveTypeOffset().Int32Value()) 35ASM_DEFINE(MIRROR_CLASS_OBJECT_SIZE_ALLOC_FAST_PATH_OFFSET, 36 art::mirror::Class::ObjectSizeAllocFastPathOffset().Int32Value()) 37ASM_DEFINE(MIRROR_CLASS_OBJECT_SIZE_OFFSET, art::mirror::Class::ObjectSizeOffset().Int32Value()) 38ASM_DEFINE(MIRROR_CLASS_STATUS_OFFSET, art::mirror::Class::StatusOffset().Int32Value()) 39ASM_DEFINE(MIRROR_CLASS_SUPER_CLASS_OFFSET, art::mirror::Class::SuperClassOffset().Int32Value()) 40ASM_DEFINE(MIRROR_CLASS_VTABLE_OFFSET_32, 41 art::mirror::Class::EmbeddedVTableOffset(art::PointerSize::k32).Int32Value()) 42ASM_DEFINE(MIRROR_CLASS_VTABLE_OFFSET_64, 43 art::mirror::Class::EmbeddedVTableOffset(art::PointerSize::k64).Int32Value()) 44 45ASM_DEFINE(MIRROR_CLASS_STATUS_SHIFT, art::SubtypeCheckBits::BitStructSizeOf()) 46ASM_DEFINE(PRIMITIVE_TYPE_SIZE_SHIFT_SHIFT, art::mirror::Class::kPrimitiveTypeSizeShiftShift) 47 48ASM_DEFINE(MIRROR_CLASS_IS_INTERFACE_FLAG, art::kAccInterface) 49ASM_DEFINE(MIRROR_CLASS_IS_INTERFACE_FLAG_BIT, art::WhichPowerOf2(art::kAccInterface)) 50ASM_DEFINE(MIRROR_CLASS_STATUS_INITIALIZED, 51 art::enum_cast<uint32_t>(art::ClassStatus::kInitialized)) 52ASM_DEFINE(MIRROR_CLASS_STATUS_INITIALIZED_SHIFTED, 53 art::enum_cast<uint32_t>(art::ClassStatus::kInitialized) 54 << art::SubtypeCheckBits::BitStructSizeOf()) 55ASM_DEFINE(MIRROR_CLASS_STATUS_INITIALIZING, 56 art::enum_cast<uint32_t>(art::ClassStatus::kInitializing)) 57ASM_DEFINE(MIRROR_CLASS_STATUS_INITIALIZING_SHIFTED, 58 art::enum_cast<uint32_t>(art::ClassStatus::kInitializing) 59 << art::SubtypeCheckBits::BitStructSizeOf()) 60ASM_DEFINE(MIRROR_CLASS_STATUS_VISIBLY_INITIALIZED, 61 art::enum_cast<uint32_t>(art::ClassStatus::kVisiblyInitialized)) 62ASM_DEFINE(MIRROR_CLASS_STATUS_VISIBLY_INITIALIZED_SHIFTED, 63 art::enum_cast<uint32_t>(art::ClassStatus::kVisiblyInitialized) 64 << art::SubtypeCheckBits::BitStructSizeOf()) 65