Support for resolving unknown direct/static methods.
If we can't resolve a method we don't know whether it is direct or
static from the dex information (other than the invocation instruction).
Add support for a third type of resolution stub that can discover the
type of the method based on the calling method and PC of the invocation
instruction. Its still unimplemented to look up the instruction and
figure out if the type is static or not.
Change-Id: I8b76e6ba2c946376e7fe287dbcca17bcaab0e133
diff --git a/src/compiler.h b/src/compiler.h
index 3b316eb..0f6f02f 100644
--- a/src/compiler.h
+++ b/src/compiler.h
@@ -7,6 +7,7 @@
#include "dex_file.h"
#include "jni_compiler.h"
#include "object.h"
+#include "runtime.h"
int oatVRegOffsetFromMethod(art::Method* method, int reg);
@@ -34,7 +35,8 @@
static ByteArray* CreateAbstractMethodErrorStub(InstructionSet instruction_set);
// Generate the trampoline that's invoked by unresolved direct methods
- static ByteArray* CreateResolutionStub(InstructionSet instruction_set, bool is_static);
+ static ByteArray* CreateResolutionStub(InstructionSet instruction_set,
+ Runtime::TrampolineType type);
private:
// Attempt to resolve all type, methods, fields, and strings