src/share/vm/ci/ciMethod.cpp

changeset 3917
8150fa46d2ed
parent 3197
5eb9169b1a14
child 3969
1d7922586cf6
     1.1 --- a/src/share/vm/ci/ciMethod.cpp	Mon Jun 25 15:34:06 2012 -0400
     1.2 +++ b/src/share/vm/ci/ciMethod.cpp	Tue Jun 26 19:08:44 2012 -0400
     1.3 @@ -1,5 +1,5 @@
     1.4  /*
     1.5 - * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
     1.6 + * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
     1.7   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     1.8   *
     1.9   * This code is free software; you can redistribute it and/or modify it
    1.10 @@ -79,7 +79,7 @@
    1.11    _max_locals         = h_m()->max_locals();
    1.12    _code_size          = h_m()->code_size();
    1.13    _intrinsic_id       = h_m()->intrinsic_id();
    1.14 -  _handler_count      = h_m()->exception_table()->length() / 4;
    1.15 +  _handler_count      = h_m()->exception_table_length();
    1.16    _uses_monitors      = h_m()->access_flags().has_monitor_bytecodes();
    1.17    _balanced_monitors  = !_uses_monitors || h_m()->access_flags().is_monitor_matching();
    1.18    _is_c1_compilable   = !h_m()->is_not_c1_compilable();
    1.19 @@ -198,7 +198,7 @@
    1.20    }
    1.21  
    1.22    // And load the exception table.
    1.23 -  typeArrayOop exc_table = me->exception_table();
    1.24 +  ExceptionTable exc_table(me);
    1.25  
    1.26    // Allocate one extra spot in our list of exceptions.  This
    1.27    // last entry will be used to represent the possibility that
    1.28 @@ -209,13 +209,12 @@
    1.29                                           * (_handler_count + 1));
    1.30    if (_handler_count > 0) {
    1.31      for (int i=0; i<_handler_count; i++) {
    1.32 -      int base = i*4;
    1.33        _exception_handlers[i] = new (arena) ciExceptionHandler(
    1.34                                  holder(),
    1.35 -            /* start    */      exc_table->int_at(base),
    1.36 -            /* limit    */      exc_table->int_at(base+1),
    1.37 -            /* goto pc  */      exc_table->int_at(base+2),
    1.38 -            /* cp index */      exc_table->int_at(base+3));
    1.39 +            /* start    */      exc_table.start_pc(i),
    1.40 +            /* limit    */      exc_table.end_pc(i),
    1.41 +            /* goto pc  */      exc_table.handler_pc(i),
    1.42 +            /* cp index */      exc_table.catch_type_index(i));
    1.43      }
    1.44    }
    1.45  

mercurial