# HG changeset patch # User Thomas Wuerthinger # Date 1322153119 -3600 # Node ID 67e92894d06591ad1fd5a672742e6e545dba6c57 # Parent 7c26db3259c60c3e4bf75e0b42a429301314b79b Set catch all to true if the caught class is java.lang.Throwable. diff -r 7c26db3259c6 -r 67e92894d065 src/share/vm/graal/graalVMEntries.cpp --- a/src/share/vm/graal/graalVMEntries.cpp Thu Nov 24 16:14:33 2011 +0100 +++ b/src/share/vm/graal/graalVMEntries.cpp Thu Nov 24 17:45:19 2011 +0100 @@ -91,7 +91,12 @@ constantPoolOop cp = instanceKlass::cast(method->method_holder())->constants(); KlassHandle loading_klass = method->method_holder(); Handle catch_class = GraalCompiler::get_RiType(cp, catch_class_index, loading_klass, CHECK_NULL); - HotSpotExceptionHandler::set_catchClass(entry, catch_class()); + if (catch_class->klass() == HotSpotTypeResolved::klass() && java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(catch_class)) == SystemDictionary::Throwable_klass()) { + HotSpotExceptionHandler::set_catchClass(entry, NULL); + HotSpotExceptionHandler::set_catchClassIndex(entry, 0); + } else { + HotSpotExceptionHandler::set_catchClass(entry, catch_class()); + } } array->obj_at_put(i, entry()); }