ART: Redo verification on field resolution failure
When compile-time verifying a field PUT and the field cannot be resolved,
the verification must be redone at runtime to ensure the field is not
final. Post an ACCESS_FIELD error.
An example is
dex file A:
class A {
{
B b = new B();
B.final_field = 12345; // illegally modify final-after-new
}
}
dex file B:
class B {
final int final_field = 0;
}
when A is compiled without B.
Bug: 34966607
Bug: 64681719
Test: m test-art-host
Test: cts-tradefed run commandAndExit cts --m vm-tests-tf
Change-Id: Ibc14b003288f7acf3c865fcdef54a6d9ed4ac867
1 file changed