diff options
author | TDYa127 <tdy@google.com> | 2012-05-26 10:27:38 -0700 |
---|---|---|
committer | Shih-wei Liao <sliao@google.com> | 2012-05-30 16:10:11 -0700 |
commit | e21021411bcab601692815ea13696f7426ac026e (patch) | |
tree | 8a2069c1c675edef160517e273e467cb9d1d009e /src/compiler_llvm/dalvik_reg.h | |
parent | b5c4922f3c0f56eec5064536c4bb780c4f58f3fb (diff) | |
download | art-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.h | 25 |
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 |