예제 #1
0
TEST(IRInstruction, InvokeSourceIsWideComplex) {
  g_redex = new RedexContext();

  IRInstruction* insn = new IRInstruction(OPCODE_INVOKE_VIRTUAL);
  DexMethodRef* m =
      DexMethod::make_method("Lfoo;", "qux", "V", {"I", "J", "I"});
  insn->set_method(m);
  insn->set_arg_word_count(4);
  insn->set_src(0, 1);
  insn->set_src(1, 0);
  insn->set_src(2, 2);
  insn->set_src(3, 3);

  EXPECT_FALSE(insn->invoke_src_is_wide(0));
  EXPECT_FALSE(insn->invoke_src_is_wide(1));
  EXPECT_TRUE(insn->invoke_src_is_wide(2));
  EXPECT_FALSE(insn->invoke_src_is_wide(3));

  delete g_redex;
}
예제 #2
0
TEST(IRInstruction, InvokeSourceIsWideBasic) {
  using namespace dex_asm;
  g_redex = new RedexContext();

  DexMethodRef* m = DexMethod::make_method("Lfoo;", "baz", "V", {"J"});
  IRInstruction* insn = new IRInstruction(OPCODE_INVOKE_STATIC);
  insn->set_arg_word_count(1);
  insn->set_src(0, 0);
  insn->set_method(m);

  EXPECT_TRUE(insn->invoke_src_is_wide(0));

  delete g_redex;
}