hotspot/src/share/vm/prims/unsafe.cpp
changeset 22796 bb0ea482a99e
parent 22786 86644d9539c2
child 22881 b16d7faa638d
equal deleted inserted replaced
22795:2b5380bc0926 22796:bb0ea482a99e
    42 
    42 
    43 /*
    43 /*
    44  *      Implementation of class sun.misc.Unsafe
    44  *      Implementation of class sun.misc.Unsafe
    45  */
    45  */
    46 
    46 
    47 #ifndef USDT2
       
    48 HS_DTRACE_PROBE_DECL3(hotspot, thread__park__begin, uintptr_t, int, long long);
       
    49 HS_DTRACE_PROBE_DECL1(hotspot, thread__park__end, uintptr_t);
       
    50 HS_DTRACE_PROBE_DECL1(hotspot, thread__unpark, uintptr_t);
       
    51 #endif /* !USDT2 */
       
    52 
    47 
    53 #define MAX_OBJECT_SIZE \
    48 #define MAX_OBJECT_SIZE \
    54   ( arrayOopDesc::header_size(T_DOUBLE) * HeapWordSize \
    49   ( arrayOopDesc::header_size(T_DOUBLE) * HeapWordSize \
    55     + ((julong)max_jint * sizeof(double)) )
    50     + ((julong)max_jint * sizeof(double)) )
    56 
    51 
  1209 UNSAFE_END
  1204 UNSAFE_END
  1210 
  1205 
  1211 UNSAFE_ENTRY(void, Unsafe_Park(JNIEnv *env, jobject unsafe, jboolean isAbsolute, jlong time))
  1206 UNSAFE_ENTRY(void, Unsafe_Park(JNIEnv *env, jobject unsafe, jboolean isAbsolute, jlong time))
  1212   UnsafeWrapper("Unsafe_Park");
  1207   UnsafeWrapper("Unsafe_Park");
  1213   EventThreadPark event;
  1208   EventThreadPark event;
  1214 #ifndef USDT2
  1209   HOTSPOT_THREAD_PARK_BEGIN((uintptr_t) thread->parker(), (int) isAbsolute, time);
  1215   HS_DTRACE_PROBE3(hotspot, thread__park__begin, thread->parker(), (int) isAbsolute, time);
  1210 
  1216 #else /* USDT2 */
       
  1217    HOTSPOT_THREAD_PARK_BEGIN(
       
  1218                              (uintptr_t) thread->parker(), (int) isAbsolute, time);
       
  1219 #endif /* USDT2 */
       
  1220   JavaThreadParkedState jtps(thread, time != 0);
  1211   JavaThreadParkedState jtps(thread, time != 0);
  1221   thread->parker()->park(isAbsolute != 0, time);
  1212   thread->parker()->park(isAbsolute != 0, time);
  1222 #ifndef USDT2
  1213 
  1223   HS_DTRACE_PROBE1(hotspot, thread__park__end, thread->parker());
  1214   HOTSPOT_THREAD_PARK_END((uintptr_t) thread->parker());
  1224 #else /* USDT2 */
       
  1225   HOTSPOT_THREAD_PARK_END(
       
  1226                           (uintptr_t) thread->parker());
       
  1227 #endif /* USDT2 */
       
  1228   if (event.should_commit()) {
  1215   if (event.should_commit()) {
  1229     oop obj = thread->current_park_blocker();
  1216     oop obj = thread->current_park_blocker();
  1230     event.set_klass((obj != NULL) ? obj->klass() : NULL);
  1217     event.set_klass((obj != NULL) ? obj->klass() : NULL);
  1231     event.set_timeout(time);
  1218     event.set_timeout(time);
  1232     event.set_address((obj != NULL) ? (TYPE_ADDRESS) cast_from_oop<uintptr_t>(obj) : 0);
  1219     event.set_address((obj != NULL) ? (TYPE_ADDRESS) cast_from_oop<uintptr_t>(obj) : 0);
  1261         }
  1248         }
  1262       }
  1249       }
  1263     }
  1250     }
  1264   }
  1251   }
  1265   if (p != NULL) {
  1252   if (p != NULL) {
  1266 #ifndef USDT2
  1253     HOTSPOT_THREAD_UNPARK((uintptr_t) p);
  1267     HS_DTRACE_PROBE1(hotspot, thread__unpark, p);
       
  1268 #else /* USDT2 */
       
  1269     HOTSPOT_THREAD_UNPARK(
       
  1270                           (uintptr_t) p);
       
  1271 #endif /* USDT2 */
       
  1272     p->unpark();
  1254     p->unpark();
  1273   }
  1255   }
  1274 UNSAFE_END
  1256 UNSAFE_END
  1275 
  1257 
  1276 UNSAFE_ENTRY(jint, Unsafe_Loadavg(JNIEnv *env, jobject unsafe, jdoubleArray loadavg, jint nelem))
  1258 UNSAFE_ENTRY(jint, Unsafe_Loadavg(JNIEnv *env, jobject unsafe, jdoubleArray loadavg, jint nelem))