47 lines
1.2 KiB
Plaintext
47 lines
1.2 KiB
Plaintext
Regression test for the combination of dex2oat using:
|
|
- jar with multidex
|
|
- vdex file where one dex file fails to fast verify (for example because of a
|
|
boot classpath change)
|
|
- dex files being compiled individually
|
|
|
|
We used to crash in CompilerDriver::FastVerify, assuming that only FastVerify
|
|
can update the compiled_classes_ map. However, this isn't the case if one of the
|
|
dex file ended up needing full verification.
|
|
|
|
We need prebuilts of the .jar and .dm file as we rely on the bootclasspath to
|
|
change which isn't expressable in a run-test. So we locally modified
|
|
android.system.Int32Ref to inherit java.util.HashMap.
|
|
|
|
The code that was used to generate the prebuilts is as follows:
|
|
|
|
|
|
file Main.java in classes.dex:
|
|
|
|
import java.util.HashMap;
|
|
import android.system.Int32Ref;
|
|
|
|
public class Main {
|
|
public static void main(String[] args) throws Exception {
|
|
try {
|
|
FailVerification.foo();
|
|
throw new Exception("Expected error");
|
|
} catch (Error expected) {
|
|
}
|
|
}
|
|
}
|
|
|
|
class FailVerification extends Foo {
|
|
|
|
public static void foo() {
|
|
Int32Ref ref = new Int32Ref(42);
|
|
takeHashMap(ref);
|
|
}
|
|
|
|
public static void takeHashMap(HashMap m) {}
|
|
}
|
|
|
|
file Foo.java in classes2.dex:
|
|
|
|
public class Foo {
|
|
}
|