src/share/vm/prims/jvmtiImpl.cpp

changeset 1046
2f716c0acb64
parent 435
a61af66fc99e
child 1907
c18cbe5936b8
     1.1 --- a/src/share/vm/prims/jvmtiImpl.cpp	Mon Mar 02 14:03:03 2009 -0700
     1.2 +++ b/src/share/vm/prims/jvmtiImpl.cpp	Mon Mar 02 14:05:07 2009 -0700
     1.3 @@ -238,6 +238,35 @@
     1.4  }
     1.5  
     1.6  
     1.7 +bool
     1.8 +JvmtiRawMonitor::is_valid() {
     1.9 +  int value = 0;
    1.10 +
    1.11 +  // This object might not be a JvmtiRawMonitor so we can't assume
    1.12 +  // the _magic field is properly aligned. Get the value in a safe
    1.13 +  // way and then check against JVMTI_RM_MAGIC.
    1.14 +
    1.15 +  switch (sizeof(_magic)) {
    1.16 +  case 2:
    1.17 +    value = Bytes::get_native_u2((address)&_magic);
    1.18 +    break;
    1.19 +
    1.20 +  case 4:
    1.21 +    value = Bytes::get_native_u4((address)&_magic);
    1.22 +    break;
    1.23 +
    1.24 +  case 8:
    1.25 +    value = Bytes::get_native_u8((address)&_magic);
    1.26 +    break;
    1.27 +
    1.28 +  default:
    1.29 +    guarantee(false, "_magic field is an unexpected size");
    1.30 +  }
    1.31 +
    1.32 +  return value == JVMTI_RM_MAGIC;
    1.33 +}
    1.34 +
    1.35 +
    1.36  //
    1.37  // class JvmtiBreakpoint
    1.38  //

mercurial