| 251 | } |
| 252 | |
| 253 | virtual void runThread(Thread* t) |
| 254 | { |
| 255 | // force monitor creation so we don't get an OutOfMemory error |
| 256 | // later when we try to acquire it: |
| 257 | objectMonitor(t, t->javaThread->lock(), true); |
| 258 | |
| 259 | THREAD_RESOURCE0(t, { |
| 260 | vm::acquire(t, t->javaThread->lock()); |
| 261 | t->clearFlag(Thread::ActiveFlag); |
| 262 | t->javaThread->peer() = 0; |
| 263 | vm::notifyAll(t, t->javaThread->lock()); |
| 264 | vm::release(t, t->javaThread->lock()); |
| 265 | }); |
| 266 | |
| 267 | GcMethod* method = resolveMethod( |
| 268 | t, roots(t)->bootLoader(), "java/lang/Thread", "run", "()V"); |
| 269 | |
| 270 | t->m->processor->invoke(t, method, t->javaThread); |
| 271 | } |
| 272 | |
| 273 | virtual void resolveNative(Thread* t, GcMethod* method) |
| 274 | { |
nothing calls this directly
no test coverage detected