I am trying to generate a call graph based on .smali file. However, I encountered a confusing case as follow:
.super Landroid/graphics/drawable/Drawable;
.source "SBarExp.java"
.method public final setBounds(Landroid/graphics/Rect;)V
.line 514
iget-object v2, p0, Lcom/sds/android/ttpod/app/modules/skin/view/SeekBarExpansion$a;->b:Landroid/graphics/drawable/Drawable;
invoke-virtual {v2, p1, v0, p3, v1}, Landroid/graphics/drawable/Drawable;->setBounds(IIII)V
.line 515
invoke-super {p0, p1, v0, p3, v1}, Landroid/graphics/drawable/Drawable;->setBounds(IIII)V
.end method
Based on my understanding, invoke-super
simply means it is going to call a parent method, so
invoke-super {p0, p1, v0, p3, v1}, Landroid/graphics/drawable/Drawable;->setBounds(IIII)V
can be interpreted as Landroid/graphics/drawable/Drawable;->setBounds(IIII)V
?
If yes, I would like to know if invoke-virtual {v2, p1, v0, p3, v1}, Landroid/graphics/drawable/Drawable;->setBounds(IIII)V
is the same as invoke-super {p0, p1, v0, p3, v1}, Landroid/graphics/drawable/Drawable;->setBounds(IIII)V
?
If not, what is the difference? If yes, why is it invoking the same method twice (using different ways)?
Please help, many thanks!