Fix occasional deadlock caused by checkpoint root marking.

There was a race where a new worker thread would attach during the
checkpoint. This caused the thread to wait since suspend count != 0.
But when we decremented the suspend count, we did not broadcast to
the resume condition.

Added a create peer parameter to Thread::Attach and
AttachCurrentThread. This is used by the threadpool since we don't
need a java peer for worker threads.

Change-Id: I632926b5a6b52eeb0684b6e1dcbf3db42ba3d35c
diff --git a/src/jni_internal.cc b/src/jni_internal.cc
index 097d587..8a16bc7 100644
--- a/src/jni_internal.cc
+++ b/src/jni_internal.cc
@@ -383,7 +383,7 @@
     thread_group = args->group;
   }
 
-  if (!runtime->AttachCurrentThread(thread_name, as_daemon, thread_group)) {
+  if (!runtime->AttachCurrentThread(thread_name, as_daemon, thread_group, !runtime->IsCompiler())) {
     *p_env = NULL;
     return JNI_ERR;
   } else {