diff options
| author | 2012-02-15 22:23:42 +0800 | |
|---|---|---|
| committer | 2012-02-18 19:15:56 -0800 | |
| commit | 1a121b99fa8c5bf72cf58dcba4ecd5fd6dad417f (patch) | |
| tree | 586d1ba2b5cfa2c587d7dacab007d7631a2fd0a4 /src/compiler_llvm/method_compiler.h | |
| parent | 2aeca0bc0adb39fb066462bf8dea5e749de8b50c (diff) | |
Implement invoke-static and invoke-direct instructions.
Change-Id: Ida7025c29394d069175208bca7b4db77e9a9899a
Diffstat (limited to 'src/compiler_llvm/method_compiler.h')
| -rw-r--r-- | src/compiler_llvm/method_compiler.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/compiler_llvm/method_compiler.h b/src/compiler_llvm/method_compiler.h index 64ecdd600d..1bf83d1164 100644 --- a/src/compiler_llvm/method_compiler.h +++ b/src/compiler_llvm/method_compiler.h @@ -231,8 +231,9 @@ class MethodCompiler { // INVOKE instructions void EmitInsn_InvokeVirtual(GEN_INSN_ARGS, bool is_range); void EmitInsn_InvokeSuper(GEN_INSN_ARGS, bool is_range); - void EmitInsn_InvokeDirect(GEN_INSN_ARGS, bool is_range); - void EmitInsn_InvokeStatic(GEN_INSN_ARGS, bool is_range); + void EmitInsn_InvokeStaticDirect(GEN_INSN_ARGS, + bool is_range, + bool is_static); void EmitInsn_InvokeInterface(GEN_INSN_ARGS, bool is_range); // Unary instructions @@ -325,6 +326,15 @@ class MethodCompiler { llvm::Value* EmitLoadStaticStorage(uint32_t dex_pc, uint32_t type_idx); + llvm::Value* EmitLoadCalleeThis(Instruction::DecodedInstruction const& di, + bool is_range); + + void EmitLoadActualParameters(std::vector<llvm::Value*>& args, + uint32_t callee_method_idx, + Instruction::DecodedInstruction const& di, + bool is_range, + bool is_static); + void EmitGuard_DivZeroException(uint32_t dex_pc, llvm::Value* denominator, JType op_jty); |