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