Home | History | Annotate | Download | only in interp

Lines Matching refs:thread

29  * Initialize the interpreter stack in a new thread.
34 bool dvmInitInterpStack(Thread* thread, int stackSize)
36 assert(thread->interpStackStart != NULL);
38 assert(thread->interpSave.curFrame == NULL);
59 static bool dvmPushInterpFrame(Thread* self, const Method* method)
135 bool dvmPushJNIFrame(Thread* self, const Method* method)
211 bool dvmPushLocalFrame(Thread* self, const Method* method)
271 bool dvmPopLocalFrame(Thread* self)
305 static bool dvmPopFrame(Thread* self)
336 dvmAbort(); // stack trashed -- nowhere to go in this thread
351 static ClassObject* callPrep(Thread* self, const Method* method, Object* obj,
374 LOGVV("thread=%d native code calling %s.%s %s", self->threadId,
420 void dvmCallMethod(Thread* self, const Method* method, Object* obj,
438 void dvmCallMethodV(Thread* self, const Method* method, Object* obj,
544 void dvmCallMethodA(Thread* self, const Method* method, Object* obj,
658 Thread* self = dvmThreadSelf();
857 int dvmComputeVagueFrameDepth(Thread* thread, const void* fp)
859 const u1* interpStackStart = thread->interpStackStart;
861 assert((u1*) fp >= interpStackStart - thread->interpStackSize);
997 void dvmHandleStackOverflow(Thread* self, const Method* method)
1045 void dvmCleanupStackOverflow(Thread* self, const Object* exception)
1075 * in the top stack frame of "thread".
1077 * The other thread might be alive, so this has to work carefully.
1079 * The thread list lock must be held.
1085 static bool extractMonitorEnterObject(Thread* thread, Object** pLockObj,
1086 Thread** pOwner)
1088 void* framePtr = thread->interpSave.curFrame;
1140 * We're assuming the thread list lock is already held by this thread.
1142 * the thread list to find a match. (The VM will generally be in a
1153 Thread* thread)
1163 if (thread != NULL) {
1164 std::string threadName(dvmGetThreadName(thread));
1165 StringAppendF(&msg, " held by tid=%d (%s)", thread->threadId, threadName.c_str());
1184 Thread* thread)
1193 * We call functions that require us to be holding the thread list lock.
1242 if (thread->status == THREAD_WAIT ||
1243 thread->status == THREAD_TIMED_WAIT)
1245 Monitor* mon = thread->waitMonitor;
1248 Thread* joinThread = NULL;
1254 } else if (thread->status == THREAD_MONITOR) {
1256 Thread* owner;
1257 if (extractMonitorEnterObject(thread, &obj, &owner)) {
1298 * Dump the stack for the specified thread.
1300 void dvmDumpThreadStack(const DebugOutputTarget* target, Thread* thread)
1302 dumpFrames(target, thread->interpSave.curFrame, thread);
1306 * Dump the stack for the specified thread, which is still running.
1309 * popped off, and if the thread exits we'll be looking at freed memory.
1316 void dvmDumpRunningThreadStack(const DebugOutputTarget* target, Thread* thread)
1325 if (thread == NULL || thread->interpSave.curFrame == NULL) {
1327 "DumpRunning: Thread at %p has no curFrame (threadid=%d)\n",
1328 thread, (thread != NULL) ? thread->threadId : 0);
1336 origSize = thread->interpStackSize;
1337 origStack = (const u1*) thread->interpStackStart - origSize;
1339 fpOffset = (u1*) thread->interpSave.curFrame - origStack;
1346 // thread->interpSave.curFrame);
1374 * We still need to pass the Thread for some monitor wait stuff.
1376 dumpFrames(target, stackCopy + fpOffset, thread);