4965252: JvmtiExport::post_raw_field_modification jni ref handling is odd
authorrbackman
Wed, 15 May 2013 11:30:54 +0200
changeset 17597 48ed8470e935
parent 17377 340c0fb14926
child 17598 f78d22d3c6c2
child 17606 60e762eed6ad
4965252: JvmtiExport::post_raw_field_modification jni ref handling is odd Reviewed-by: coleenp, sspitsyn
hotspot/src/share/vm/prims/jvmtiExport.cpp
--- a/hotspot/src/share/vm/prims/jvmtiExport.cpp	Tue May 14 17:33:07 2013 +0000
+++ b/hotspot/src/share/vm/prims/jvmtiExport.cpp	Wed May 15 11:30:54 2013 +0200
@@ -1624,15 +1624,19 @@
     }
   }
 
+  assert(sig_type != '[', "array should have sig_type == 'L'");
+  bool handle_created = false;
+
   // convert oop to JNI handle.
-  if (sig_type == 'L' || sig_type == '[') {
+  if (sig_type == 'L') {
+    handle_created = true;
     value->l = (jobject)JNIHandles::make_local(thread, (oop)value->l);
   }
 
   post_field_modification(thread, method, location, field_klass, object, field, sig_type, value);
 
   // Destroy the JNI handle allocated above.
-  if (sig_type == 'L') {
+  if (handle_created) {
     JNIHandles::destroy_local(value->l);
   }
 }