summaryrefslogtreecommitdiffstats
path: root/runtime/entrypoints/quick
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2014-02-27 12:26:20 -0800
committerAndreas Gampe <agampe@google.com>2014-03-03 23:27:12 +0000
commit2da882315a61072664f7ce3c212307342e907207 (patch)
tree67d777be044f5b60e2f13ab7968b63c581904ea9 /runtime/entrypoints/quick
parent762d4e5b9e777ae64c4ba581af9c84b78a5e96a6 (diff)
downloadart-2da882315a61072664f7ce3c212307342e907207.zip
art-2da882315a61072664f7ce3c212307342e907207.tar.gz
art-2da882315a61072664f7ce3c212307342e907207.tar.bz2
Initial changes towards Generic JNI option
Some initial changes that lead to an UNIMPLEMENTED. Works by not compiling for JNI right now and tracking native methods which have neither quick nor portable code. Uses new trampoline. Change-Id: I5448654044eb2717752fd7359f4ef8bd5c17be6e
Diffstat (limited to 'runtime/entrypoints/quick')
-rw-r--r--runtime/entrypoints/quick/quick_entrypoints.h1
-rw-r--r--runtime/entrypoints/quick/quick_trampoline_entrypoints.cc9
2 files changed, 10 insertions, 0 deletions
diff --git a/runtime/entrypoints/quick/quick_entrypoints.h b/runtime/entrypoints/quick/quick_entrypoints.h
index 011e926..5c3b824 100644
--- a/runtime/entrypoints/quick/quick_entrypoints.h
+++ b/runtime/entrypoints/quick/quick_entrypoints.h
@@ -87,6 +87,7 @@ struct PACKED(4) QuickEntryPoints {
mirror::Object* (*pJniMethodEndWithReference)(jobject result, uint32_t cookie, Thread* self);
mirror::Object* (*pJniMethodEndWithReferenceSynchronized)(jobject result, uint32_t cookie,
jobject locked, Thread* self);
+ void (*pQuickGenericJniTrampoline)(mirror::ArtMethod*);
// Locks
void (*pLockObject)(void*);
diff --git a/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc b/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc
index 5339b5e..ef40be8 100644
--- a/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc
+++ b/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc
@@ -817,4 +817,13 @@ extern "C" const void* artQuickResolutionTrampoline(mirror::ArtMethod* called,
return code;
}
+extern "C" const void* artQuickGenericJniTrampoline(mirror::ArtMethod* called,
+ mirror::Object* receiver,
+ Thread* thread, mirror::ArtMethod** sp)
+ SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) {
+ LOG(FATAL) << "artQuickGenericJniTrampoline not implemented: "
+ << PrettyMethod(called);
+ return NULL;
+}
+
} // namespace art