comparison src/share/vm/graal/graalVMEntries.cpp @ 3699:67e92894d065

Set catch all to true if the caught class is java.lang.Throwable.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Thu, 24 Nov 2011 17:45:19 +0100
parents ff6582ef15b3
children b5c649e4e700
comparison
equal deleted inserted replaced
3695:7c26db3259c6 3699:67e92894d065
89 HotSpotExceptionHandler::set_catchClass(entry, NULL); 89 HotSpotExceptionHandler::set_catchClass(entry, NULL);
90 } else { 90 } else {
91 constantPoolOop cp = instanceKlass::cast(method->method_holder())->constants(); 91 constantPoolOop cp = instanceKlass::cast(method->method_holder())->constants();
92 KlassHandle loading_klass = method->method_holder(); 92 KlassHandle loading_klass = method->method_holder();
93 Handle catch_class = GraalCompiler::get_RiType(cp, catch_class_index, loading_klass, CHECK_NULL); 93 Handle catch_class = GraalCompiler::get_RiType(cp, catch_class_index, loading_klass, CHECK_NULL);
94 HotSpotExceptionHandler::set_catchClass(entry, catch_class()); 94 if (catch_class->klass() == HotSpotTypeResolved::klass() && java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(catch_class)) == SystemDictionary::Throwable_klass()) {
95 HotSpotExceptionHandler::set_catchClass(entry, NULL);
96 HotSpotExceptionHandler::set_catchClassIndex(entry, 0);
97 } else {
98 HotSpotExceptionHandler::set_catchClass(entry, catch_class());
99 }
95 } 100 }
96 array->obj_at_put(i, entry()); 101 array->obj_at_put(i, entry());
97 } 102 }
98 103
99 return (jobjectArray) JNIHandles::make_local(array()); 104 return (jobjectArray) JNIHandles::make_local(array());