2027 if (jvmti_breakpoints.clear(bp) == JVMTI_ERROR_NOT_FOUND) 2028 return JVMTI_ERROR_NOT_FOUND; 2029 2030 if (TraceJVMTICalls) { 2031 jvmti_breakpoints.print(); 2032 } 2033 2034 return JVMTI_ERROR_NONE; 2035 } /* end ClearBreakpoint */ 2036 2037 2038 // 2039 // Watched Field functions 2040 // 2041 2042 jvmtiError 2043 JvmtiEnv::SetFieldAccessWatch(fieldDescriptor* fdesc_ptr) { 2044 // make sure we haven't set this watch before 2045 if (fdesc_ptr->is_field_access_watched()) return JVMTI_ERROR_DUPLICATE; 2046 fdesc_ptr->set_is_field_access_watched(true); 2047 update_klass_field_access_flag(fdesc_ptr); 2048 2049 JvmtiEventController::change_field_watch(JVMTI_EVENT_FIELD_ACCESS, true); 2050 2051 return JVMTI_ERROR_NONE; 2052 } /* end SetFieldAccessWatch */ 2053 2054 2055 jvmtiError 2056 JvmtiEnv::ClearFieldAccessWatch(fieldDescriptor* fdesc_ptr) { 2057 // make sure we have a watch to clear 2058 if (!fdesc_ptr->is_field_access_watched()) return JVMTI_ERROR_NOT_FOUND; 2059 fdesc_ptr->set_is_field_access_watched(false); 2060 update_klass_field_access_flag(fdesc_ptr); 2061 2062 JvmtiEventController::change_field_watch(JVMTI_EVENT_FIELD_ACCESS, false); 2063 2064 return JVMTI_ERROR_NONE; 2065 } /* end ClearFieldAccessWatch */ 2066 2067 2068 jvmtiError 2069 JvmtiEnv::SetFieldModificationWatch(fieldDescriptor* fdesc_ptr) { 2070 // make sure we haven't set this watch before 2071 if (fdesc_ptr->is_field_modification_watched()) return JVMTI_ERROR_DUPLICATE; 2072 fdesc_ptr->set_is_field_modification_watched(true); 2073 update_klass_field_access_flag(fdesc_ptr); 2074 2075 JvmtiEventController::change_field_watch(JVMTI_EVENT_FIELD_MODIFICATION, true); 2076 2077 return JVMTI_ERROR_NONE; 2078 } /* end SetFieldModificationWatch */ 2079 2080 2081 jvmtiError 2082 JvmtiEnv::ClearFieldModificationWatch(fieldDescriptor* fdesc_ptr) { 2083 // make sure we have a watch to clear 2084 if (!fdesc_ptr->is_field_modification_watched()) return JVMTI_ERROR_NOT_FOUND; 2085 fdesc_ptr->set_is_field_modification_watched(false); 2086 update_klass_field_access_flag(fdesc_ptr); 2087 2088 JvmtiEventController::change_field_watch(JVMTI_EVENT_FIELD_MODIFICATION, false); 2089 2090 return JVMTI_ERROR_NONE; 2091 } /* end ClearFieldModificationWatch */ 2092 2093 // 2094 // Class functions 2095 // 2096 2097 2098 // k_mirror - may be primitive, this must be checked 2099 // signature_ptr - NULL is a valid value, must be checked 2100 // generic_ptr - NULL is a valid value, must be checked 2101 jvmtiError 2102 JvmtiEnv::GetClassSignature(oop k_mirror, char** signature_ptr, char** generic_ptr) { 2103 ResourceMark rm; 2104 bool isPrimitive = java_lang_Class::is_primitive(k_mirror); 2105 klassOop k = NULL; 2106 if (!isPrimitive) { | 2027 if (jvmti_breakpoints.clear(bp) == JVMTI_ERROR_NOT_FOUND) 2028 return JVMTI_ERROR_NOT_FOUND; 2029 2030 if (TraceJVMTICalls) { 2031 jvmti_breakpoints.print(); 2032 } 2033 2034 return JVMTI_ERROR_NONE; 2035 } /* end ClearBreakpoint */ 2036 2037 2038 // 2039 // Watched Field functions 2040 // 2041 2042 jvmtiError 2043 JvmtiEnv::SetFieldAccessWatch(fieldDescriptor* fdesc_ptr) { 2044 // make sure we haven't set this watch before 2045 if (fdesc_ptr->is_field_access_watched()) return JVMTI_ERROR_DUPLICATE; 2046 fdesc_ptr->set_is_field_access_watched(true); 2047 2048 JvmtiEventController::change_field_watch(JVMTI_EVENT_FIELD_ACCESS, true); 2049 2050 return JVMTI_ERROR_NONE; 2051 } /* end SetFieldAccessWatch */ 2052 2053 2054 jvmtiError 2055 JvmtiEnv::ClearFieldAccessWatch(fieldDescriptor* fdesc_ptr) { 2056 // make sure we have a watch to clear 2057 if (!fdesc_ptr->is_field_access_watched()) return JVMTI_ERROR_NOT_FOUND; 2058 fdesc_ptr->set_is_field_access_watched(false); 2059 2060 JvmtiEventController::change_field_watch(JVMTI_EVENT_FIELD_ACCESS, false); 2061 2062 return JVMTI_ERROR_NONE; 2063 } /* end ClearFieldAccessWatch */ 2064 2065 2066 jvmtiError 2067 JvmtiEnv::SetFieldModificationWatch(fieldDescriptor* fdesc_ptr) { 2068 // make sure we haven't set this watch before 2069 if (fdesc_ptr->is_field_modification_watched()) return JVMTI_ERROR_DUPLICATE; 2070 fdesc_ptr->set_is_field_modification_watched(true); 2071 2072 JvmtiEventController::change_field_watch(JVMTI_EVENT_FIELD_MODIFICATION, true); 2073 2074 return JVMTI_ERROR_NONE; 2075 } /* end SetFieldModificationWatch */ 2076 2077 2078 jvmtiError 2079 JvmtiEnv::ClearFieldModificationWatch(fieldDescriptor* fdesc_ptr) { 2080 // make sure we have a watch to clear 2081 if (!fdesc_ptr->is_field_modification_watched()) return JVMTI_ERROR_NOT_FOUND; 2082 fdesc_ptr->set_is_field_modification_watched(false); 2083 2084 JvmtiEventController::change_field_watch(JVMTI_EVENT_FIELD_MODIFICATION, false); 2085 2086 return JVMTI_ERROR_NONE; 2087 } /* end ClearFieldModificationWatch */ 2088 2089 // 2090 // Class functions 2091 // 2092 2093 2094 // k_mirror - may be primitive, this must be checked 2095 // signature_ptr - NULL is a valid value, must be checked 2096 // generic_ptr - NULL is a valid value, must be checked 2097 jvmtiError 2098 JvmtiEnv::GetClassSignature(oop k_mirror, char** signature_ptr, char** generic_ptr) { 2099 ResourceMark rm; 2100 bool isPrimitive = java_lang_Class::is_primitive(k_mirror); 2101 klassOop k = NULL; 2102 if (!isPrimitive) { |