diff -r 16c930df1e9b -r 1760a1cbed36 src/share/vm/runtime/jniHandles.hpp --- a/src/share/vm/runtime/jniHandles.hpp Tue Jul 28 13:50:07 2009 -0600 +++ b/src/share/vm/runtime/jniHandles.hpp Tue Aug 11 11:57:51 2009 -0600 @@ -1,5 +1,5 @@ /* - * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -196,12 +196,16 @@ }; inline methodOop JNIHandles::checked_resolve_jmethod_id(jmethodID mid) { - jobject handle = (jobject)mid; - if (is_weak_global_handle(handle)) { - return (methodOop) resolve_non_null(handle); - } else { + if (mid == NULL) { return (methodOop) NULL; } + + oop o = resolve_non_null((jobject) mid); + if (!o->is_method()) { + return (methodOop) NULL; + } + + return (methodOop) o; };