834 clazz = *pclazz;
835 *pclazz = NULL;
836 saveGlobalRef(env, clazz, pclazz);
837 }
838 if ( evinfo->object != NULL ) {
839 pobject = &(evinfo->object);
840 object = *pobject;
841 *pobject = NULL;
842 saveGlobalRef(env, object, pobject);
843 }
844
845 switch (evinfo->ei) {
846 case EI_FIELD_MODIFICATION:
847 if ( evinfo->u.field_modification.field_clazz != NULL ) {
848 pclazz = &(evinfo->u.field_modification.field_clazz);
849 clazz = *pclazz;
850 *pclazz = NULL;
851 saveGlobalRef(env, clazz, pclazz);
852 }
853 sig = evinfo->u.field_modification.signature_type;
854 if ((sig == JDWP_TAG(ARRAY)) || (sig == JDWP_TAG(OBJECT))) {
855 if ( evinfo->u.field_modification.new_value.l != NULL ) {
856 pobject = &(evinfo->u.field_modification.new_value.l);
857 object = *pobject;
858 *pobject = NULL;
859 saveGlobalRef(env, object, pobject);
860 }
861 }
862 break;
863 case EI_FIELD_ACCESS:
864 if ( evinfo->u.field_access.field_clazz != NULL ) {
865 pclazz = &(evinfo->u.field_access.field_clazz);
866 clazz = *pclazz;
867 *pclazz = NULL;
868 saveGlobalRef(env, clazz, pclazz);
869 }
870 break;
871 case EI_EXCEPTION:
872 if ( evinfo->u.exception.catch_clazz != NULL ) {
873 pclazz = &(evinfo->u.exception.catch_clazz);
874 clazz = *pclazz;
887
888 static void
889 tossEventInfoRefs(JNIEnv *env, EventInfo *evinfo)
890 {
891 char sig;
892 if ( evinfo->thread != NULL ) {
893 tossGlobalRef(env, &(evinfo->thread));
894 }
895 if ( evinfo->clazz != NULL ) {
896 tossGlobalRef(env, &(evinfo->clazz));
897 }
898 if ( evinfo->object != NULL ) {
899 tossGlobalRef(env, &(evinfo->object));
900 }
901 switch (evinfo->ei) {
902 case EI_FIELD_MODIFICATION:
903 if ( evinfo->u.field_modification.field_clazz != NULL ) {
904 tossGlobalRef(env, &(evinfo->u.field_modification.field_clazz));
905 }
906 sig = evinfo->u.field_modification.signature_type;
907 if ((sig == JDWP_TAG(ARRAY)) || (sig == JDWP_TAG(OBJECT))) {
908 if ( evinfo->u.field_modification.new_value.l != NULL ) {
909 tossGlobalRef(env, &(evinfo->u.field_modification.new_value.l));
910 }
911 }
912 break;
913 case EI_FIELD_ACCESS:
914 if ( evinfo->u.field_access.field_clazz != NULL ) {
915 tossGlobalRef(env, &(evinfo->u.field_access.field_clazz));
916 }
917 break;
918 case EI_EXCEPTION:
919 if ( evinfo->u.exception.catch_clazz != NULL ) {
920 tossGlobalRef(env, &(evinfo->u.exception.catch_clazz));
921 }
922 break;
923 default:
924 break;
925 }
926 }
927
|
834 clazz = *pclazz;
835 *pclazz = NULL;
836 saveGlobalRef(env, clazz, pclazz);
837 }
838 if ( evinfo->object != NULL ) {
839 pobject = &(evinfo->object);
840 object = *pobject;
841 *pobject = NULL;
842 saveGlobalRef(env, object, pobject);
843 }
844
845 switch (evinfo->ei) {
846 case EI_FIELD_MODIFICATION:
847 if ( evinfo->u.field_modification.field_clazz != NULL ) {
848 pclazz = &(evinfo->u.field_modification.field_clazz);
849 clazz = *pclazz;
850 *pclazz = NULL;
851 saveGlobalRef(env, clazz, pclazz);
852 }
853 sig = evinfo->u.field_modification.signature_type;
854 if ((sig == JDWP_TAG(ARRAY)) || (sig == JDWP_TAG(OBJECT)) || (sig == JDWP_TAG(INLINE_OBJECT))) {
855 if ( evinfo->u.field_modification.new_value.l != NULL ) {
856 pobject = &(evinfo->u.field_modification.new_value.l);
857 object = *pobject;
858 *pobject = NULL;
859 saveGlobalRef(env, object, pobject);
860 }
861 }
862 break;
863 case EI_FIELD_ACCESS:
864 if ( evinfo->u.field_access.field_clazz != NULL ) {
865 pclazz = &(evinfo->u.field_access.field_clazz);
866 clazz = *pclazz;
867 *pclazz = NULL;
868 saveGlobalRef(env, clazz, pclazz);
869 }
870 break;
871 case EI_EXCEPTION:
872 if ( evinfo->u.exception.catch_clazz != NULL ) {
873 pclazz = &(evinfo->u.exception.catch_clazz);
874 clazz = *pclazz;
887
888 static void
889 tossEventInfoRefs(JNIEnv *env, EventInfo *evinfo)
890 {
891 char sig;
892 if ( evinfo->thread != NULL ) {
893 tossGlobalRef(env, &(evinfo->thread));
894 }
895 if ( evinfo->clazz != NULL ) {
896 tossGlobalRef(env, &(evinfo->clazz));
897 }
898 if ( evinfo->object != NULL ) {
899 tossGlobalRef(env, &(evinfo->object));
900 }
901 switch (evinfo->ei) {
902 case EI_FIELD_MODIFICATION:
903 if ( evinfo->u.field_modification.field_clazz != NULL ) {
904 tossGlobalRef(env, &(evinfo->u.field_modification.field_clazz));
905 }
906 sig = evinfo->u.field_modification.signature_type;
907 if ((sig == JDWP_TAG(ARRAY)) || (sig == JDWP_TAG(OBJECT)) || (sig == JDWP_TAG(INLINE_OBJECT))) {
908 if ( evinfo->u.field_modification.new_value.l != NULL ) {
909 tossGlobalRef(env, &(evinfo->u.field_modification.new_value.l));
910 }
911 }
912 break;
913 case EI_FIELD_ACCESS:
914 if ( evinfo->u.field_access.field_clazz != NULL ) {
915 tossGlobalRef(env, &(evinfo->u.field_access.field_clazz));
916 }
917 break;
918 case EI_EXCEPTION:
919 if ( evinfo->u.exception.catch_clazz != NULL ) {
920 tossGlobalRef(env, &(evinfo->u.exception.catch_clazz));
921 }
922 break;
923 default:
924 break;
925 }
926 }
927
|