LLVM doesn't use Frame.
Change-Id: I34200a874739598c33cc8fe17db4f70d29073310
diff --git a/src/dalvik_system_VMStack.cc b/src/dalvik_system_VMStack.cc
index 7ba4d14..696d723 100644
--- a/src/dalvik_system_VMStack.cc
+++ b/src/dalvik_system_VMStack.cc
@@ -19,6 +19,7 @@
#include "object.h"
#include "scoped_heap_lock.h"
#include "scoped_thread_list_lock.h"
+#include "shadow_frame.h"
#include "thread_list.h"
#include "JniConstants.h" // Last to avoid problems with LOG redefinition.
@@ -45,10 +46,17 @@
static jobject VMStack_getCallingClassLoader(JNIEnv* env, jclass) {
// Returns the defining class loader of the caller's caller.
// TODO: need SmartFrame (Thread::WalkStack-like iterator).
+#if !defined(ART_USE_LLVM_COMPILER)
Frame frame = Thread::Current()->GetTopOfStack();
frame.Next();
frame.Next();
Method* callerCaller = frame.GetMethod();
+#else
+ ShadowFrame* frame = Thread::Current()->GetTopOfShadowFrame();
+ frame = frame->GetLink();
+ frame = frame->GetLink();
+ Method* callerCaller = frame->GetMethod();
+#endif
DCHECK(callerCaller != NULL);
const Object* cl = callerCaller->GetDeclaringClass()->GetClassLoader();
return AddLocalReference<jobject>(env, cl);