equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright 1999-2003 Sun Microsystems, Inc. All Rights Reserved. |
2 * Copyright 1999-2009 Sun Microsystems, Inc. All Rights Reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
32 // ------------------------------------------------------------------ |
32 // ------------------------------------------------------------------ |
33 // ciExceptionHandler::catch_klass |
33 // ciExceptionHandler::catch_klass |
34 // |
34 // |
35 // Get the exception klass that this handler catches. |
35 // Get the exception klass that this handler catches. |
36 ciInstanceKlass* ciExceptionHandler::catch_klass() { |
36 ciInstanceKlass* ciExceptionHandler::catch_klass() { |
|
37 VM_ENTRY_MARK; |
37 assert(!is_catch_all(), "bad index"); |
38 assert(!is_catch_all(), "bad index"); |
38 if (_catch_klass == NULL) { |
39 if (_catch_klass == NULL) { |
39 bool will_link; |
40 bool will_link; |
40 ciKlass* k = CURRENT_ENV->get_klass_by_index(_loading_klass, |
41 assert(_loading_klass->get_instanceKlass()->is_linked(), "must be linked before accessing constant pool"); |
|
42 constantPoolHandle cpool(_loading_klass->get_instanceKlass()->constants()); |
|
43 ciKlass* k = CURRENT_ENV->get_klass_by_index(cpool, |
41 _catch_klass_index, |
44 _catch_klass_index, |
42 will_link); |
45 will_link, |
|
46 _loading_klass); |
43 if (!will_link && k->is_loaded()) { |
47 if (!will_link && k->is_loaded()) { |
44 GUARDED_VM_ENTRY( |
48 GUARDED_VM_ENTRY( |
45 k = CURRENT_ENV->get_unloaded_klass(_loading_klass, k->name()); |
49 k = CURRENT_ENV->get_unloaded_klass(_loading_klass, k->name()); |
46 ) |
50 ) |
47 } |
51 } |