summaryrefslogtreecommitdiff
path: root/compiler/optimizing/nodes.cc
diff options
context:
space:
mode:
author Aart Bik <ajcbik@google.com> 2016-04-04 17:28:59 -0700
committer Nicolas Geoffray <ngeoffray@google.com> 2016-05-10 09:17:07 +0100
commitffaa91d39baf82006afe74ad6e59cfd498334017 (patch)
treedab2ce329bc65dd770cdec619b35ae28a337289e /compiler/optimizing/nodes.cc
parentceeb3b73f84e8b11f362605007d382405d08d95c (diff)
Workaround invokesuper underspecified behavior.
The verifier allows invokesuper on a class unrelated to the referring class. However, the runtime uses the vtable of the super class of the referring class to lookup the ArtMethod. Since the receiver has no relation to the referring class, this lead to either jumping to a wrong method, or "luckily" throw a NoSuchMethodError if the vtable index is out of bounds of the super class of the referring class. This changes the runtime behavior to always throw NoSuchMethodError when hitting such invokesuper. Also, we make the verifier consistent with the runtime by treating such calls unresolved. bug=27627004 (cherry picked from commit f663e341c550d1aa6f8f587d0ae0dbf7d254ff55) Change-Id: Ibec5a1e3a3320c474e1e0e5634a9ef62ea734cdf
Diffstat (limited to 'compiler/optimizing/nodes.cc')
0 files changed, 0 insertions, 0 deletions