From e21021411bcab601692815ea13696f7426ac026e Mon Sep 17 00:00:00 2001 From: TDYa127 Date: Sat, 26 May 2012 10:27:38 -0700 Subject: 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 --- src/compiler_llvm/dalvik_reg.h | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) (limited to 'src/compiler_llvm/dalvik_reg.h') 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 +#include 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 -- cgit v1.1