Spot NULL jobjects passed to MonitorEnter/MonitorExit.

(Rather than aborting inside the monitor implementation.)

Change-Id: I1dd30726c56d9d5707616f1c998ab2bff170a649
diff --git a/src/jni_internal_test.cc b/src/jni_internal_test.cc
index 97cd969..d492deb 100644
--- a/src/jni_internal_test.cc
+++ b/src/jni_internal_test.cc
@@ -1505,6 +1505,14 @@
   thrown_exception = env_->ExceptionOccurred();
   env_->ExceptionClear();
   EXPECT_TRUE(env_->IsInstanceOf(thrown_exception, imse_class));
+
+  // It's an error to call MonitorEnter or MonitorExit on NULL.
+  vm_->check_jni_abort_hook = TestCheckJniAbortHook;
+  env_->MonitorEnter(NULL);
+  EXPECT_TRUE(gCheckJniAbortMessage.find("in call to MonitorEnter") != std::string::npos);
+  env_->MonitorExit(NULL);
+  EXPECT_TRUE(gCheckJniAbortMessage.find("in call to MonitorExit") != std::string::npos);
+  vm_->check_jni_abort_hook = NULL;
 }
 
 }  // namespace art