summaryrefslogtreecommitdiffstats
path: root/src/compiler_llvm/dalvik_reg.h
diff options
context:
space:
mode:
authorTDYa127 <tdy@google.com>2012-05-26 10:27:38 -0700
committerShih-wei Liao <sliao@google.com>2012-05-30 16:10:11 -0700
commite21021411bcab601692815ea13696f7426ac026e (patch)
tree8a2069c1c675edef160517e273e467cb9d1d009e /src/compiler_llvm/dalvik_reg.h
parentb5c4922f3c0f56eec5064536c4bb780c4f58f3fb (diff)
downloadart-e21021411bcab601692815ea13696f7426ac026e.zip
art-e21021411bcab601692815ea13696f7426ac026e.tar.gz
art-e21021411bcab601692815ea13696f7426ac026e.tar.bz2
Refactor dalvik_reg.
Also, fix ComputeMethodInfo, ARRAY_LENGTH may throw exception. Don't store arguments to shadow frame, it already existed in the caller's shadow frame. Change-Id: I184a93ed7f3caea924514d425e6a00dc60464f90
Diffstat (limited to 'src/compiler_llvm/dalvik_reg.h')
-rw-r--r--src/compiler_llvm/dalvik_reg.h25
1 files changed, 11 insertions, 14 deletions
diff --git a/src/compiler_llvm/dalvik_reg.h b/src/compiler_llvm/dalvik_reg.h
index 7356c87..f950771 100644
--- a/src/compiler_llvm/dalvik_reg.h
+++ b/src/compiler_llvm/dalvik_reg.h
@@ -20,6 +20,7 @@
#include "backend_types.h"
#include <stdint.h>
+#include <string>
namespace llvm {
class Type;
@@ -34,16 +35,13 @@ class MethodCompiler;
class DalvikReg {
public:
- static DalvikReg* CreateLocalVarReg(MethodCompiler& method_compiler,
- uint32_t reg_idx);
-
- static DalvikReg* CreateRetValReg(MethodCompiler& method_compiler);
-
static llvm::Type* GetRegCategoryEquivSizeTy(IRBuilder& irb, RegCategory reg_cat);
static char GetRegCategoryNamePrefix(RegCategory reg_cat);
- virtual ~DalvikReg();
+ DalvikReg(MethodCompiler& method_compiler, const std::string& name);
+
+ ~DalvikReg();
llvm::Value* GetValue(JType jty, JTypeSpace space);
@@ -51,28 +49,27 @@ class DalvikReg {
return GetValue(GetJTypeFromShorty(shorty), space);
}
- virtual void SetValue(JType jty, JTypeSpace space, llvm::Value* value);
+ void SetValue(JType jty, JTypeSpace space, llvm::Value* value);
void SetValue(char shorty, JTypeSpace space, llvm::Value* value) {
return SetValue(GetJTypeFromShorty(shorty), space, value);
}
- protected:
- DalvikReg(MethodCompiler& method_compiler);
-
private:
- llvm::Value* GetAddr(JType jty, JTypeSpace space);
+ llvm::Value* GetAddr(JType jty);
llvm::Value* RegCat1SExt(llvm::Value* value);
llvm::Value* RegCat1ZExt(llvm::Value* value);
llvm::Value* RegCat1Trunc(llvm::Value* value, llvm::Type* ty);
- virtual llvm::Value* GetRawAddr(JType jty, JTypeSpace space) = 0;
-
- protected:
MethodCompiler* method_compiler_;
IRBuilder& irb_;
+
+ std::string reg_name_;
+ llvm::Value* reg_32_;
+ llvm::Value* reg_64_;
+ llvm::Value* reg_obj_;
};
} // namespace compiler_llvm