Cleanup "Beginning of LLVM backend for ART."
Change-Id: I290e4d46b880256b6bf2eae7b3c828ee8d7595f2
diff --git a/src/compiler_llvm/backend_types.h b/src/compiler_llvm/backend_types.h
index 86b0ea2..bf5a413 100644
--- a/src/compiler_llvm/backend_types.h
+++ b/src/compiler_llvm/backend_types.h
@@ -115,7 +115,7 @@
return kRegObject;
}
- LOG(FATAL) << "Uknown java type: " << jty;
+ LOG(FATAL) << "Unknown java type: " << jty;
return kRegUnknown;
}
diff --git a/src/compiler_llvm/compiler_llvm.cc b/src/compiler_llvm/compiler_llvm.cc
index c0f5881..10aaca4 100644
--- a/src/compiler_llvm/compiler_llvm.cc
+++ b/src/compiler_llvm/compiler_llvm.cc
@@ -27,8 +27,8 @@
#include <llvm/Module.h>
#include <llvm/Support/ToolOutputFile.h>
-using namespace art;
-using namespace art::compiler_llvm;
+namespace art {
+namespace compiler_llvm {
CompilerLLVM::CompilerLLVM(Compiler* compiler, InstructionSet insn_set)
@@ -49,7 +49,8 @@
void CompilerLLVM::MaterializeLLVMModule() {
#if !defined(NDEBUG)
- // TODO: For device, need to use another temporary path.
+ // TODO: Add options to JNI_CreateJavaVM() and dex2oat, so that we don't
+ // have to hard-code the path.
WriteBitcodeToFile("/tmp/art_llvm_module.bc");
#endif
}
@@ -94,3 +95,7 @@
return method_compiler->Compile();
}
+
+
+} // namespace compiler_llvm
+} // namespace art
diff --git a/src/compiler_llvm/compiler_llvm.h b/src/compiler_llvm/compiler_llvm.h
index 74f8ba1..0de28f5 100644
--- a/src/compiler_llvm/compiler_llvm.h
+++ b/src/compiler_llvm/compiler_llvm.h
@@ -29,7 +29,6 @@
class ClassLoader;
class CompiledMethod;
class Compiler;
- class Mutex;
}
diff --git a/src/compiler_llvm/frontend.cc b/src/compiler_llvm/frontend.cc
index d2a4ad4..7507b26 100644
--- a/src/compiler_llvm/frontend.cc
+++ b/src/compiler_llvm/frontend.cc
@@ -14,26 +14,22 @@
* limitations under the License.
*/
-#include "method_compiler.h"
-
-#include "class_linker.h"
-#include "class_loader.h"
-#include "compiler.h"
-#include "constants.h"
#include "dex_file.h"
-#include "runtime.h"
+#include "logging.h"
-#include <UniquePtr.h>
#include <stdint.h>
-using namespace art::compiler_llvm;
-
namespace art {
-int oatVRegOffset(const art::DexFile::CodeItem* code_item,
+int oatVRegOffset(const DexFile::CodeItem* code_item,
uint32_t core_spills, uint32_t fp_spills,
size_t frame_size, int reg) {
- UNIMPLEMENTED(FATAL);
+
+ // TODO: Remove oatVRegOffset() after we have adapted the OatWriter
+ // and OatFile.
+
+ UNIMPLEMENTED(WARNING) << "oatVRegOffset() is not and won't be "
+ << "implemented in LLVM backend";
return 0;
}
diff --git a/src/compiler_llvm/ir_builder.cc b/src/compiler_llvm/ir_builder.cc
index ea773bd..24fac1a 100644
--- a/src/compiler_llvm/ir_builder.cc
+++ b/src/compiler_llvm/ir_builder.cc
@@ -18,7 +18,8 @@
#include <llvm/Module.h>
-using namespace art::compiler_llvm;
+namespace art {
+namespace compiler_llvm {
//----------------------------------------------------------------------------
@@ -78,9 +79,13 @@
llvm::Type* IRBuilder::getJTypeInRegSpace(JType jty) {
- switch (GetRegCategoryFromJType(jty)) {
+ RegCategory regcat = GetRegCategoryFromJType(jty);
+
+ switch (regcat) {
case kRegUnknown:
case kRegZero:
+ LOG(FATAL) << "Register category \"Unknown\" or \"Zero\" does not have "
+ << "the LLVM type";
return NULL;
case kRegCat1nr:
@@ -93,6 +98,7 @@
return getJObjectTy();
}
+ LOG(FATAL) << "Unknown register category: " << regcat;
return NULL;
}
@@ -100,6 +106,7 @@
llvm::Type* IRBuilder::getJTypeInArraySpace(JType jty) {
switch (jty) {
case kVoid:
+ LOG(FATAL) << "void type should not be used in array type space";
return NULL;
case kBoolean:
@@ -126,5 +133,10 @@
return getJObjectTy();
}
+ LOG(FATAL) << "Unknown java type: " << jty;
return NULL;
}
+
+
+} // namespace compiler_llvm
+} // namespace art
diff --git a/src/compiler_llvm/ir_builder.h b/src/compiler_llvm/ir_builder.h
index 2b4095c..a88b16d 100644
--- a/src/compiler_llvm/ir_builder.h
+++ b/src/compiler_llvm/ir_builder.h
@@ -110,6 +110,7 @@
return getJTypeInArraySpace(jty);
}
+ LOG(FATAL) << "Unknown type space: " << space;
return NULL;
}
@@ -201,6 +202,7 @@
llvm::Constant* getJZero(JType jty) {
switch (jty) {
case kVoid:
+ LOG(FATAL) << "Zero is not a value of void type";
return NULL;
case kBoolean:
diff --git a/src/compiler_llvm/libdex.h b/src/compiler_llvm/libdex.h
deleted file mode 100644
index 40668fc..0000000
--- a/src/compiler_llvm/libdex.h
+++ /dev/null
@@ -1,46 +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_SRC_COMPILER_LLVM_LIBDEX_H_
-#define ART_SRC_COMPILER_LLVM_LIBDEX_H_
-
-#include <assert.h>
-
-// From Common.h
-// TODO: remove all these and just use the long names
-typedef uint8_t u1;
-typedef uint16_t u2;
-typedef uint32_t u4;
-typedef uint64_t u8;
-typedef int8_t s1;
-typedef int16_t s2;
-typedef int32_t s4;
-typedef int64_t s8;
-typedef unsigned long long u8;
-
-// Skip old DexFile.h
-#define LIBDEX_DEXFILE_H_
-
-// Skip old vm/Common.h
-#define DALVIK_COMMON_H_
-
-// Make inlines inline
-#define DEX_INLINE inline
-#include "DexOpcodes.h"
-#include "InstrUtils.h"
-
-
-#endif // ART_SRC_COMPILER_LLVM_LIBDEX_H_
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc
index 4aec8b1..cf0ea3e 100644
--- a/src/compiler_llvm/method_compiler.cc
+++ b/src/compiler_llvm/method_compiler.cc
@@ -28,16 +28,17 @@
#include <llvm/Analysis/Verifier.h>
#include <llvm/Function.h>
-using namespace art::compiler_llvm;
+namespace art {
+namespace compiler_llvm {
-MethodCompiler::MethodCompiler(art::InstructionSet insn_set,
- art::Compiler const* compiler,
- art::ClassLinker* class_linker,
- art::ClassLoader const* class_loader,
- art::DexFile const* dex_file,
- art::DexCache* dex_cache,
- art::DexFile::CodeItem const* code_item,
+MethodCompiler::MethodCompiler(InstructionSet insn_set,
+ Compiler* compiler,
+ ClassLinker* class_linker,
+ ClassLoader const* class_loader,
+ DexFile const* dex_file,
+ DexCache* dex_cache,
+ DexFile::CodeItem const* code_item,
uint32_t method_idx,
uint32_t access_flags)
: insn_set_(insn_set),
@@ -57,21 +58,26 @@
void MethodCompiler::EmitPrologue() {
- // TODO: Not implemented!
+ // UNIMPLEMENTED(WARNING);
}
-void MethodCompiler::EmitEpilogue() {
+void MethodCompiler::EmitInstructions() {
+ // UNIMPLEMENTED(WARNING);
}
-void MethodCompiler::EmitInstruction(uint32_t addr,
- art::Instruction const* insn) {
- // TODO: Not implemented!
+void MethodCompiler::EmitInstruction(uint32_t dex_pc,
+ Instruction const* insn) {
+ // UNIMPLEMENTED(WARNING);
}
-art::CompiledMethod *MethodCompiler::Compile() {
- // TODO: Not implemented!
- return new art::CompiledMethod(insn_set_, NULL);
+CompiledMethod *MethodCompiler::Compile() {
+ // UNIMPLEMENTED(WARNING);
+ return new CompiledMethod(insn_set_, NULL);
}
+
+
+} // namespace compiler_llvm
+} // namespace art
diff --git a/src/compiler_llvm/method_compiler.h b/src/compiler_llvm/method_compiler.h
index 2d9f91c..8d9820a 100644
--- a/src/compiler_llvm/method_compiler.h
+++ b/src/compiler_llvm/method_compiler.h
@@ -57,19 +57,19 @@
class MethodCompiler {
private:
- art::InstructionSet insn_set_;
- art::Compiler const* compiler_;
- art::compiler_llvm::CompilerLLVM* compiler_llvm_;
+ InstructionSet insn_set_;
+ Compiler* compiler_;
+ compiler_llvm::CompilerLLVM* compiler_llvm_;
- art::ClassLinker* class_linker_;
- art::ClassLoader const* class_loader_;
+ ClassLinker* class_linker_;
+ ClassLoader const* class_loader_;
- art::DexFile const* dex_file_;
- art::DexCache* dex_cache_;
- art::DexFile::CodeItem const* code_item_;
+ DexFile const* dex_file_;
+ DexCache* dex_cache_;
+ DexFile::CodeItem const* code_item_;
- art::Method* method_;
- art::MethodHelper method_helper_;
+ Method* method_;
+ MethodHelper method_helper_;
uint32_t method_idx_;
uint32_t access_flags_;
@@ -80,27 +80,26 @@
llvm::Function* func_;
public:
- MethodCompiler(art::InstructionSet insn_set,
- art::Compiler const* compiler,
- art::ClassLinker* class_linker,
- art::ClassLoader const* class_loader,
- art::DexFile const* dex_file,
- art::DexCache* dex_cache,
- art::DexFile::CodeItem const* code_item,
+ MethodCompiler(InstructionSet insn_set,
+ Compiler* compiler,
+ ClassLinker* class_linker,
+ ClassLoader const* class_loader,
+ DexFile const* dex_file,
+ DexCache* dex_cache,
+ DexFile::CodeItem const* code_item,
uint32_t method_idx,
uint32_t access_flags);
~MethodCompiler();
- art::CompiledMethod* Compile();
+ CompiledMethod* Compile();
private:
void CreateFunction();
void EmitPrologue();
void EmitInstructions();
- void EmitInstruction(uint32_t addr, art::Instruction const* insn);
- void EmitEpilogue();
+ void EmitInstruction(uint32_t dex_pc, Instruction const* insn);
};