libredex/IRInstruction.cpp
// The instruction format doesn't tell us the width of registers for invoke
// so we inspect the signature of the method we're calling
The instruction format doesn't tell us the width of registers for invoke
so we inspect the signature of the method we're calling
The instruction format doesn ' t tell us the width of registers for invoke so we inspect the signature of the method we ' re calling
bool IRInstruction::invoke_src_is_wide(src_index_t i) const {
  always_assert(has_method());
  if (!opcode::is_invoke_static(m_opcode)) {
    if (i == 0) {
      return false;
    }
    --i;
  }
  return type::is_wide_type(m_method->get_proto()->get_args()->at(i));
}
bool IRInstruction :: invoke_src_is_wide ( src_index_t i ) const { always_assert ( has_method ( ) ) ; if ( ! opcode :: is_invoke_static ( m_opcode ) ) { if ( i == 0 ) { return false ; } -- i ; } return type :: is_wide_type ( m_method -> get_proto ( ) -> get_args ( ) -> at ( i ) ) ; }
The instruction format doesn't tell us the width of registers for invoke
so we inspect the signature of the method we're calling
The instruction format doesn ' t tell us the width of registers for invoke so we inspect the signature of the method we ' re calling
// virtual methods have `this` as the 0th register argument, but the // arg list does NOT include `this` // reference to `this`. References are never wide