summaryrefslogtreecommitdiffstats
path: root/compiler/driver/dex_compilation_unit.h
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/driver/dex_compilation_unit.h')
-rw-r--r--compiler/driver/dex_compilation_unit.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/compiler/driver/dex_compilation_unit.h b/compiler/driver/dex_compilation_unit.h
new file mode 100644
index 0000000..3c6129d
--- /dev/null
+++ b/compiler/driver/dex_compilation_unit.h
@@ -0,0 +1,116 @@
+/*
+ * 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_SRC_COMPILER_DEX_DEX_COMPILATION_UNIT_H_
+#define ART_SRC_COMPILER_DEX_DEX_COMPILATION_UNIT_H_
+
+#include <stdint.h>
+
+#include "dex_file.h"
+#include "jni.h"
+
+namespace art {
+namespace mirror {
+class ClassLoader;
+class DexCache;
+} // namespace mirror
+class ClassLinker;
+struct CompilationUnit;
+
+class DexCompilationUnit {
+ public:
+ DexCompilationUnit(CompilationUnit* cu);
+
+ DexCompilationUnit(CompilationUnit* cu, jobject class_loader, ClassLinker* class_linker,
+ const DexFile& dex_file, const DexFile::CodeItem* code_item,
+ uint32_t class_def_idx, uint32_t method_idx, uint32_t access_flags);
+
+ CompilationUnit* GetCompilationUnit() const {
+ return cu_;
+ }
+
+ jobject GetClassLoader() const {
+ return class_loader_;
+ }
+
+ ClassLinker* GetClassLinker() const {
+ return class_linker_;
+ }
+
+ const DexFile* GetDexFile() const {
+ return dex_file_;
+ }
+
+ uint32_t GetClassDefIndex() const {
+ return class_def_idx_;
+ }
+
+ uint32_t GetDexMethodIndex() const {
+ return dex_method_idx_;
+ }
+
+ const DexFile::CodeItem* GetCodeItem() const {
+ return code_item_;
+ }
+
+ const char* GetShorty() const {
+ const DexFile::MethodId& method_id = dex_file_->GetMethodId(dex_method_idx_);
+ return dex_file_->GetMethodShorty(method_id);
+ }
+
+ const char* GetShorty(uint32_t* shorty_len) const {
+ const DexFile::MethodId& method_id = dex_file_->GetMethodId(dex_method_idx_);
+ return dex_file_->GetMethodShorty(method_id, shorty_len);
+ }
+
+ uint32_t GetAccessFlags() const {
+ return access_flags_;
+ }
+
+ bool IsNative() const {
+ return ((access_flags_ & kAccNative) != 0);
+ }
+
+ bool IsStatic() const {
+ return ((access_flags_ & kAccStatic) != 0);
+ }
+
+ bool IsSynchronized() const {
+ return ((access_flags_ & kAccSynchronized) != 0);
+ }
+
+ const std::string& GetSymbol();
+
+ private:
+ CompilationUnit* const cu_;
+
+ const jobject class_loader_;
+
+ ClassLinker* const class_linker_;
+
+ const DexFile* const dex_file_;
+
+ const DexFile::CodeItem* const code_item_;
+ const uint32_t class_def_idx_;
+ const uint32_t dex_method_idx_;
+ const uint32_t access_flags_;
+
+ std::string symbol_;
+};
+
+} // namespace art
+
+#endif // ART_SRC_COMPILER_DEX_DEX_COMPILATION_UNIT_H_