hotspot/src/share/vm/ci/ciExceptionHandler.cpp
changeset 4567 7fc02fbe5c7a
parent 1 489c9b5090e2
child 5547 f4b087cbb361
equal deleted inserted replaced
4566:b363f6ef4068 4567:7fc02fbe5c7a
     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     }