Print this page
rev 1083 : [mq]: indy.compiler.inline.patch

Split Close
Expand all
Collapse all
          --- old/src/share/vm/ci/ciExceptionHandler.cpp
          +++ new/src/share/vm/ci/ciExceptionHandler.cpp
   1    1  /*
   2      - * Copyright 1999-2003 Sun Microsystems, Inc.  All Rights Reserved.
        2 + * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
   3    3   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4    4   *
   5    5   * This code is free software; you can redistribute it and/or modify it
   6    6   * under the terms of the GNU General Public License version 2 only, as
   7    7   * published by the Free Software Foundation.
   8    8   *
   9    9   * This code is distributed in the hope that it will be useful, but WITHOUT
  10   10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11   11   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12   12   * version 2 for more details (a copy is included in the LICENSE file that
↓ open down ↓ 14 lines elided ↑ open up ↑
  27   27  
  28   28  // ciExceptionHandler
  29   29  //
  30   30  // This class represents an exception handler for a method.
  31   31  
  32   32  // ------------------------------------------------------------------
  33   33  // ciExceptionHandler::catch_klass
  34   34  //
  35   35  // Get the exception klass that this handler catches.
  36   36  ciInstanceKlass* ciExceptionHandler::catch_klass() {
       37 +  VM_ENTRY_MARK;
  37   38    assert(!is_catch_all(), "bad index");
  38   39    if (_catch_klass == NULL) {
  39   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   44                                                   _catch_klass_index,
  42      -                                                 will_link);
       45 +                                                 will_link,
       46 +                                                 _loading_klass);
  43   47      if (!will_link && k->is_loaded()) {
  44   48        GUARDED_VM_ENTRY(
  45   49          k = CURRENT_ENV->get_unloaded_klass(_loading_klass, k->name());
  46   50        )
  47   51      }
  48   52      _catch_klass = k->as_instance_klass();
  49   53    }
  50   54    return _catch_klass;
  51   55  }
  52   56  
↓ open down ↓ 12 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX