summaryrefslogtreecommitdiff
path: root/compiler/driver/compiler_driver-inl.h
diff options
context:
space:
mode:
authorVladimir Marko <vmarko@google.com>2019-03-04 12:53:20 +0000
committerVladimir Marko <vmarko@google.com>2019-03-11 06:59:41 +0000
commit327497e303903f300b01f77f2259fd5b61238ee3 (patch)
tree3f714d2d2ee7d9b6c0ecf71a10c157d4952e5758 /compiler/driver/compiler_driver-inl.h
parentef764ad3e6d7f07ea9e32642dc3e163bb4eb44fb (diff)
Move CompilerDriver to dex2oat/.
Also DexToDexCompiler, QuickCompilerCallbacks and tests. aosp_taimen-userdebug: - before: lib64/libart-compiler.so: 3112344 lib/libart-compiler.so: 2312908 bin/dex2oat: 563176 - after: lib64/libart-compiler.so: 2986720 (-123KiB) lib/libart-compiler.so: 2219852 (-91KiB) bin/dex2oat: 635832 (+71KiB) Test: m test-art-host-gtest Test: testrunner.py --host --optimizing --jit Change-Id: I36e63b83dff1d5c731d05de27d3663cfc81de6ad
Diffstat (limited to 'compiler/driver/compiler_driver-inl.h')
-rw-r--r--compiler/driver/compiler_driver-inl.h104
1 files changed, 0 insertions, 104 deletions
diff --git a/compiler/driver/compiler_driver-inl.h b/compiler/driver/compiler_driver-inl.h
deleted file mode 100644
index ec2e38bc7f..0000000000
--- a/compiler/driver/compiler_driver-inl.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2012 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_DRIVER_COMPILER_DRIVER_INL_H_
-#define ART_COMPILER_DRIVER_COMPILER_DRIVER_INL_H_
-
-#include "compiler_driver.h"
-
-#include "art_field-inl.h"
-#include "art_method-inl.h"
-#include "base/enums.h"
-#include "class_linker-inl.h"
-#include "dex_compilation_unit.h"
-#include "handle_scope-inl.h"
-#include "mirror/class_loader.h"
-#include "mirror/dex_cache-inl.h"
-#include "runtime.h"
-#include "scoped_thread_state_change-inl.h"
-
-namespace art {
-
-inline ObjPtr<mirror::Class> CompilerDriver::ResolveClass(
- const ScopedObjectAccess& soa,
- Handle<mirror::DexCache> dex_cache,
- Handle<mirror::ClassLoader> class_loader,
- dex::TypeIndex cls_index,
- const DexCompilationUnit* mUnit) {
- DCHECK_EQ(dex_cache->GetDexFile(), mUnit->GetDexFile());
- DCHECK_EQ(class_loader.Get(), mUnit->GetClassLoader().Get());
- ObjPtr<mirror::Class> cls =
- mUnit->GetClassLinker()->ResolveType(cls_index, dex_cache, class_loader);
- DCHECK_EQ(cls == nullptr, soa.Self()->IsExceptionPending());
- if (UNLIKELY(cls == nullptr)) {
- // Clean up any exception left by type resolution.
- soa.Self()->ClearException();
- }
- return cls;
-}
-
-inline ObjPtr<mirror::Class> CompilerDriver::ResolveCompilingMethodsClass(
- const ScopedObjectAccess& soa,
- Handle<mirror::DexCache> dex_cache,
- Handle<mirror::ClassLoader> class_loader,
- const DexCompilationUnit* mUnit) {
- DCHECK_EQ(dex_cache->GetDexFile(), mUnit->GetDexFile());
- DCHECK_EQ(class_loader.Get(), mUnit->GetClassLoader().Get());
- const dex::MethodId& referrer_method_id =
- mUnit->GetDexFile()->GetMethodId(mUnit->GetDexMethodIndex());
- return ResolveClass(soa, dex_cache, class_loader, referrer_method_id.class_idx_, mUnit);
-}
-
-inline ArtField* CompilerDriver::ResolveField(const ScopedObjectAccess& soa,
- Handle<mirror::DexCache> dex_cache,
- Handle<mirror::ClassLoader> class_loader,
- uint32_t field_idx,
- bool is_static) {
- ArtField* resolved_field = Runtime::Current()->GetClassLinker()->ResolveField(
- field_idx, dex_cache, class_loader, is_static);
- DCHECK_EQ(resolved_field == nullptr, soa.Self()->IsExceptionPending());
- if (UNLIKELY(resolved_field == nullptr)) {
- // Clean up any exception left by type resolution.
- soa.Self()->ClearException();
- return nullptr;
- }
- if (UNLIKELY(resolved_field->IsStatic() != is_static)) {
- // ClassLinker can return a field of the wrong kind directly from the DexCache.
- // Silently return null on such incompatible class change.
- return nullptr;
- }
- return resolved_field;
-}
-
-inline std::pair<bool, bool> CompilerDriver::IsFastInstanceField(
- ObjPtr<mirror::DexCache> dex_cache,
- ObjPtr<mirror::Class> referrer_class,
- ArtField* resolved_field,
- uint16_t field_idx) {
- DCHECK(!resolved_field->IsStatic());
- ObjPtr<mirror::Class> fields_class = resolved_field->GetDeclaringClass();
- bool fast_get = referrer_class != nullptr &&
- referrer_class->CanAccessResolvedField(fields_class,
- resolved_field,
- dex_cache,
- field_idx);
- bool fast_put = fast_get && (!resolved_field->IsFinal() || fields_class == referrer_class);
- return std::make_pair(fast_get, fast_put);
-}
-
-} // namespace art
-
-#endif // ART_COMPILER_DRIVER_COMPILER_DRIVER_INL_H_