annotate src/share/vm/code/exceptionHandlerTable.cpp @ 3992:d1bdeef3e3e2

7098282: G1: assert(interval >= 0) failed: Sanity check, referencePolicy.cpp: 76 Summary: There is a race between one thread successfully forwarding and copying the klass mirror for the SoftReference class (including the static master clock) and another thread attempting to use the master clock while attempting to discover a soft reference object. Maintain a shadow copy of the soft reference master clock and use the shadow during reference discovery and reference processing. Reviewed-by: tonyp, brutisso, ysr
author johnc
date Wed, 12 Oct 2011 10:25:51 -0700
parents f95d63e2154a
children 78bbf4d43a14
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
1748
3e8fbc61cee8 6978355: renaming for 6961697
twisti
parents: 1552
diff changeset
2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 *
a61af66fc99e Initial load
duke
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 * published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 *
a61af66fc99e Initial load
duke
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 * accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 *
a61af66fc99e Initial load
duke
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1490
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1490
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1490
diff changeset
21 * questions.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
22 *
a61af66fc99e Initial load
duke
parents:
diff changeset
23 */
a61af66fc99e Initial load
duke
parents:
diff changeset
24
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1748
diff changeset
25 #include "precompiled.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1748
diff changeset
26 #include "code/exceptionHandlerTable.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1748
diff changeset
27 #include "code/nmethod.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1748
diff changeset
28 #include "memory/allocation.inline.hpp"
0
a61af66fc99e Initial load
duke
parents:
diff changeset
29
a61af66fc99e Initial load
duke
parents:
diff changeset
30 void ExceptionHandlerTable::add_entry(HandlerTableEntry entry) {
a61af66fc99e Initial load
duke
parents:
diff changeset
31 _nesting.check();
a61af66fc99e Initial load
duke
parents:
diff changeset
32 if (_length >= _size) {
a61af66fc99e Initial load
duke
parents:
diff changeset
33 // not enough space => grow the table (amortized growth, double its size)
a61af66fc99e Initial load
duke
parents:
diff changeset
34 guarantee(_size > 0, "no space allocated => cannot grow the table since it is part of nmethod");
a61af66fc99e Initial load
duke
parents:
diff changeset
35 int new_size = _size * 2;
a61af66fc99e Initial load
duke
parents:
diff changeset
36 _table = REALLOC_RESOURCE_ARRAY(HandlerTableEntry, _table, _size, new_size);
a61af66fc99e Initial load
duke
parents:
diff changeset
37 _size = new_size;
a61af66fc99e Initial load
duke
parents:
diff changeset
38 }
a61af66fc99e Initial load
duke
parents:
diff changeset
39 assert(_length < _size, "sanity check");
a61af66fc99e Initial load
duke
parents:
diff changeset
40 _table[_length++] = entry;
a61af66fc99e Initial load
duke
parents:
diff changeset
41 }
a61af66fc99e Initial load
duke
parents:
diff changeset
42
a61af66fc99e Initial load
duke
parents:
diff changeset
43
a61af66fc99e Initial load
duke
parents:
diff changeset
44 HandlerTableEntry* ExceptionHandlerTable::subtable_for(int catch_pco) const {
a61af66fc99e Initial load
duke
parents:
diff changeset
45 int i = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
46 while (i < _length) {
a61af66fc99e Initial load
duke
parents:
diff changeset
47 HandlerTableEntry* t = _table + i;
a61af66fc99e Initial load
duke
parents:
diff changeset
48 if (t->pco() == catch_pco) {
a61af66fc99e Initial load
duke
parents:
diff changeset
49 // found subtable matching the catch_pco
a61af66fc99e Initial load
duke
parents:
diff changeset
50 return t;
a61af66fc99e Initial load
duke
parents:
diff changeset
51 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
52 // advance to next subtable
a61af66fc99e Initial load
duke
parents:
diff changeset
53 i += t->len() + 1; // +1 for header
a61af66fc99e Initial load
duke
parents:
diff changeset
54 }
a61af66fc99e Initial load
duke
parents:
diff changeset
55 }
a61af66fc99e Initial load
duke
parents:
diff changeset
56 return NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
57 }
a61af66fc99e Initial load
duke
parents:
diff changeset
58
a61af66fc99e Initial load
duke
parents:
diff changeset
59
a61af66fc99e Initial load
duke
parents:
diff changeset
60 ExceptionHandlerTable::ExceptionHandlerTable(int initial_size) {
a61af66fc99e Initial load
duke
parents:
diff changeset
61 guarantee(initial_size > 0, "initial size must be > 0");
a61af66fc99e Initial load
duke
parents:
diff changeset
62 _table = NEW_RESOURCE_ARRAY(HandlerTableEntry, initial_size);
a61af66fc99e Initial load
duke
parents:
diff changeset
63 _length = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
64 _size = initial_size;
a61af66fc99e Initial load
duke
parents:
diff changeset
65 }
a61af66fc99e Initial load
duke
parents:
diff changeset
66
a61af66fc99e Initial load
duke
parents:
diff changeset
67
a61af66fc99e Initial load
duke
parents:
diff changeset
68 ExceptionHandlerTable::ExceptionHandlerTable(const nmethod* nm) {
a61af66fc99e Initial load
duke
parents:
diff changeset
69 _table = (HandlerTableEntry*)nm->handler_table_begin();
a61af66fc99e Initial load
duke
parents:
diff changeset
70 _length = nm->handler_table_size() / sizeof(HandlerTableEntry);
a61af66fc99e Initial load
duke
parents:
diff changeset
71 _size = 0; // no space allocated by ExeptionHandlerTable!
a61af66fc99e Initial load
duke
parents:
diff changeset
72 }
a61af66fc99e Initial load
duke
parents:
diff changeset
73
a61af66fc99e Initial load
duke
parents:
diff changeset
74
a61af66fc99e Initial load
duke
parents:
diff changeset
75 void ExceptionHandlerTable::add_subtable(
a61af66fc99e Initial load
duke
parents:
diff changeset
76 int catch_pco,
a61af66fc99e Initial load
duke
parents:
diff changeset
77 GrowableArray<intptr_t>* handler_bcis,
a61af66fc99e Initial load
duke
parents:
diff changeset
78 GrowableArray<intptr_t>* scope_depths_from_top_scope,
a61af66fc99e Initial load
duke
parents:
diff changeset
79 GrowableArray<intptr_t>* handler_pcos
a61af66fc99e Initial load
duke
parents:
diff changeset
80 ) {
a61af66fc99e Initial load
duke
parents:
diff changeset
81 assert(subtable_for(catch_pco) == NULL, "catch handlers for this catch_pco added twice");
a61af66fc99e Initial load
duke
parents:
diff changeset
82 assert(handler_bcis->length() == handler_pcos->length(), "bci & pc table have different length");
a61af66fc99e Initial load
duke
parents:
diff changeset
83 assert(scope_depths_from_top_scope == NULL || handler_bcis->length() == scope_depths_from_top_scope->length(), "bci & scope_depths table have different length");
a61af66fc99e Initial load
duke
parents:
diff changeset
84 if (handler_bcis->length() > 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
85 // add subtable header
a61af66fc99e Initial load
duke
parents:
diff changeset
86 add_entry(HandlerTableEntry(handler_bcis->length(), catch_pco, 0));
a61af66fc99e Initial load
duke
parents:
diff changeset
87 // add individual entries
a61af66fc99e Initial load
duke
parents:
diff changeset
88 for (int i = 0; i < handler_bcis->length(); i++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
89 intptr_t scope_depth = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
90 if (scope_depths_from_top_scope != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
91 scope_depth = scope_depths_from_top_scope->at(i);
a61af66fc99e Initial load
duke
parents:
diff changeset
92 }
a61af66fc99e Initial load
duke
parents:
diff changeset
93 add_entry(HandlerTableEntry(handler_bcis->at(i), handler_pcos->at(i), scope_depth));
a61af66fc99e Initial load
duke
parents:
diff changeset
94 assert(entry_for(catch_pco, handler_bcis->at(i), scope_depth)->pco() == handler_pcos->at(i), "entry not added correctly (1)");
a61af66fc99e Initial load
duke
parents:
diff changeset
95 assert(entry_for(catch_pco, handler_bcis->at(i), scope_depth)->scope_depth() == scope_depth, "entry not added correctly (2)");
a61af66fc99e Initial load
duke
parents:
diff changeset
96 }
a61af66fc99e Initial load
duke
parents:
diff changeset
97 }
a61af66fc99e Initial load
duke
parents:
diff changeset
98 }
a61af66fc99e Initial load
duke
parents:
diff changeset
99
a61af66fc99e Initial load
duke
parents:
diff changeset
100
a61af66fc99e Initial load
duke
parents:
diff changeset
101 void ExceptionHandlerTable::copy_to(nmethod* nm) {
a61af66fc99e Initial load
duke
parents:
diff changeset
102 assert(size_in_bytes() == nm->handler_table_size(), "size of space allocated in nmethod incorrect");
a61af66fc99e Initial load
duke
parents:
diff changeset
103 memmove(nm->handler_table_begin(), _table, size_in_bytes());
a61af66fc99e Initial load
duke
parents:
diff changeset
104 }
a61af66fc99e Initial load
duke
parents:
diff changeset
105
a61af66fc99e Initial load
duke
parents:
diff changeset
106
a61af66fc99e Initial load
duke
parents:
diff changeset
107 HandlerTableEntry* ExceptionHandlerTable::entry_for(int catch_pco, int handler_bci, int scope_depth) const {
a61af66fc99e Initial load
duke
parents:
diff changeset
108 HandlerTableEntry* t = subtable_for(catch_pco);
a61af66fc99e Initial load
duke
parents:
diff changeset
109 if (t != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
110 int l = t->len();
a61af66fc99e Initial load
duke
parents:
diff changeset
111 while (l-- > 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
112 t++;
a61af66fc99e Initial load
duke
parents:
diff changeset
113 if (t->bci() == handler_bci && t->scope_depth() == scope_depth) return t;
a61af66fc99e Initial load
duke
parents:
diff changeset
114 }
a61af66fc99e Initial load
duke
parents:
diff changeset
115 }
a61af66fc99e Initial load
duke
parents:
diff changeset
116 return NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
117 }
a61af66fc99e Initial load
duke
parents:
diff changeset
118
a61af66fc99e Initial load
duke
parents:
diff changeset
119
a61af66fc99e Initial load
duke
parents:
diff changeset
120 void ExceptionHandlerTable::print_subtable(HandlerTableEntry* t) const {
a61af66fc99e Initial load
duke
parents:
diff changeset
121 int l = t->len();
a61af66fc99e Initial load
duke
parents:
diff changeset
122 tty->print_cr("catch_pco = %d (%d entries)", t->pco(), l);
a61af66fc99e Initial load
duke
parents:
diff changeset
123 while (l-- > 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
124 t++;
a61af66fc99e Initial load
duke
parents:
diff changeset
125 tty->print_cr(" bci %d at scope depth %d -> pco %d", t->bci(), t->scope_depth(), t->pco());
a61af66fc99e Initial load
duke
parents:
diff changeset
126 }
a61af66fc99e Initial load
duke
parents:
diff changeset
127 }
a61af66fc99e Initial load
duke
parents:
diff changeset
128
a61af66fc99e Initial load
duke
parents:
diff changeset
129
a61af66fc99e Initial load
duke
parents:
diff changeset
130 void ExceptionHandlerTable::print() const {
a61af66fc99e Initial load
duke
parents:
diff changeset
131 tty->print_cr("ExceptionHandlerTable (size = %d bytes)", size_in_bytes());
a61af66fc99e Initial load
duke
parents:
diff changeset
132 int i = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
133 while (i < _length) {
a61af66fc99e Initial load
duke
parents:
diff changeset
134 HandlerTableEntry* t = _table + i;
a61af66fc99e Initial load
duke
parents:
diff changeset
135 print_subtable(t);
a61af66fc99e Initial load
duke
parents:
diff changeset
136 // advance to next subtable
a61af66fc99e Initial load
duke
parents:
diff changeset
137 i += t->len() + 1; // +1 for header
a61af66fc99e Initial load
duke
parents:
diff changeset
138 }
a61af66fc99e Initial load
duke
parents:
diff changeset
139 }
a61af66fc99e Initial load
duke
parents:
diff changeset
140
a61af66fc99e Initial load
duke
parents:
diff changeset
141 void ExceptionHandlerTable::print_subtable_for(int catch_pco) const {
a61af66fc99e Initial load
duke
parents:
diff changeset
142 HandlerTableEntry* subtable = subtable_for(catch_pco);
a61af66fc99e Initial load
duke
parents:
diff changeset
143
a61af66fc99e Initial load
duke
parents:
diff changeset
144 if( subtable != NULL ) { print_subtable( subtable ); }
a61af66fc99e Initial load
duke
parents:
diff changeset
145 }
a61af66fc99e Initial load
duke
parents:
diff changeset
146
a61af66fc99e Initial load
duke
parents:
diff changeset
147 // ----------------------------------------------------------------------------
a61af66fc99e Initial load
duke
parents:
diff changeset
148 // Implicit null exception tables. Maps an exception PC offset to a
a61af66fc99e Initial load
duke
parents:
diff changeset
149 // continuation PC offset. During construction it's a variable sized
a61af66fc99e Initial load
duke
parents:
diff changeset
150 // array with a max size and current length. When stored inside an
a61af66fc99e Initial load
duke
parents:
diff changeset
151 // nmethod a zero length table takes no space. This is detected by
a61af66fc99e Initial load
duke
parents:
diff changeset
152 // nul_chk_table_size() == 0. Otherwise the table has a length word
a61af66fc99e Initial load
duke
parents:
diff changeset
153 // followed by pairs of <excp-offset, const-offset>.
a61af66fc99e Initial load
duke
parents:
diff changeset
154 void ImplicitExceptionTable::set_size( uint size ) {
a61af66fc99e Initial load
duke
parents:
diff changeset
155 _size = size;
a61af66fc99e Initial load
duke
parents:
diff changeset
156 _data = NEW_RESOURCE_ARRAY(implicit_null_entry, (size*2));
a61af66fc99e Initial load
duke
parents:
diff changeset
157 _len = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
158 }
a61af66fc99e Initial load
duke
parents:
diff changeset
159
a61af66fc99e Initial load
duke
parents:
diff changeset
160 void ImplicitExceptionTable::append( uint exec_off, uint cont_off ) {
a61af66fc99e Initial load
duke
parents:
diff changeset
161 assert( (sizeof(implicit_null_entry) >= 4) || (exec_off < 65535), "" );
a61af66fc99e Initial load
duke
parents:
diff changeset
162 assert( (sizeof(implicit_null_entry) >= 4) || (cont_off < 65535), "" );
a61af66fc99e Initial load
duke
parents:
diff changeset
163 uint l = len();
a61af66fc99e Initial load
duke
parents:
diff changeset
164 if (l == _size) {
a61af66fc99e Initial load
duke
parents:
diff changeset
165 uint old_size_in_elements = _size*2;
a61af66fc99e Initial load
duke
parents:
diff changeset
166 if (_size == 0) _size = 4;
a61af66fc99e Initial load
duke
parents:
diff changeset
167 _size *= 2;
a61af66fc99e Initial load
duke
parents:
diff changeset
168 uint new_size_in_elements = _size*2;
a61af66fc99e Initial load
duke
parents:
diff changeset
169 _data = REALLOC_RESOURCE_ARRAY(uint, _data, old_size_in_elements, new_size_in_elements);
a61af66fc99e Initial load
duke
parents:
diff changeset
170 }
a61af66fc99e Initial load
duke
parents:
diff changeset
171 *(adr(l) ) = exec_off;
a61af66fc99e Initial load
duke
parents:
diff changeset
172 *(adr(l)+1) = cont_off;
a61af66fc99e Initial load
duke
parents:
diff changeset
173 _len = l+1;
a61af66fc99e Initial load
duke
parents:
diff changeset
174 };
a61af66fc99e Initial load
duke
parents:
diff changeset
175
a61af66fc99e Initial load
duke
parents:
diff changeset
176 uint ImplicitExceptionTable::at( uint exec_off ) const {
a61af66fc99e Initial load
duke
parents:
diff changeset
177 uint l = len();
a61af66fc99e Initial load
duke
parents:
diff changeset
178 for( uint i=0; i<l; i++ )
a61af66fc99e Initial load
duke
parents:
diff changeset
179 if( *adr(i) == exec_off )
a61af66fc99e Initial load
duke
parents:
diff changeset
180 return *(adr(i)+1);
a61af66fc99e Initial load
duke
parents:
diff changeset
181 return 0; // Failed to find any execption offset
a61af66fc99e Initial load
duke
parents:
diff changeset
182 }
a61af66fc99e Initial load
duke
parents:
diff changeset
183
a61af66fc99e Initial load
duke
parents:
diff changeset
184 void ImplicitExceptionTable::print(address base) const {
a61af66fc99e Initial load
duke
parents:
diff changeset
185 tty->print("{");
a61af66fc99e Initial load
duke
parents:
diff changeset
186 for( uint i=0; i<len(); i++ )
a61af66fc99e Initial load
duke
parents:
diff changeset
187 tty->print("< "INTPTR_FORMAT", "INTPTR_FORMAT" > ",base + *adr(i), base + *(adr(i)+1));
a61af66fc99e Initial load
duke
parents:
diff changeset
188 tty->print_cr("}");
a61af66fc99e Initial load
duke
parents:
diff changeset
189 }
a61af66fc99e Initial load
duke
parents:
diff changeset
190
a61af66fc99e Initial load
duke
parents:
diff changeset
191 ImplicitExceptionTable::ImplicitExceptionTable(const nmethod* nm) {
a61af66fc99e Initial load
duke
parents:
diff changeset
192 if (nm->nul_chk_table_size() == 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
193 _len = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
194 _data = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
195 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
196 // the first word is the length if non-zero, so read it out and
a61af66fc99e Initial load
duke
parents:
diff changeset
197 // skip to the next word to get the table.
a61af66fc99e Initial load
duke
parents:
diff changeset
198 _data = (implicit_null_entry*)nm->nul_chk_table_begin();
a61af66fc99e Initial load
duke
parents:
diff changeset
199 _len = _data[0];
a61af66fc99e Initial load
duke
parents:
diff changeset
200 _data++;
a61af66fc99e Initial load
duke
parents:
diff changeset
201 }
a61af66fc99e Initial load
duke
parents:
diff changeset
202 _size = len();
a61af66fc99e Initial load
duke
parents:
diff changeset
203 assert(size_in_bytes() <= nm->nul_chk_table_size(), "size of space allocated in nmethod incorrect");
a61af66fc99e Initial load
duke
parents:
diff changeset
204 }
a61af66fc99e Initial load
duke
parents:
diff changeset
205
a61af66fc99e Initial load
duke
parents:
diff changeset
206 void ImplicitExceptionTable::copy_to( nmethod* nm ) {
a61af66fc99e Initial load
duke
parents:
diff changeset
207 assert(size_in_bytes() <= nm->nul_chk_table_size(), "size of space allocated in nmethod incorrect");
a61af66fc99e Initial load
duke
parents:
diff changeset
208 if (len() != 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
209 implicit_null_entry* nmdata = (implicit_null_entry*)nm->nul_chk_table_begin();
a61af66fc99e Initial load
duke
parents:
diff changeset
210 // store the length in the first uint
a61af66fc99e Initial load
duke
parents:
diff changeset
211 nmdata[0] = _len;
a61af66fc99e Initial load
duke
parents:
diff changeset
212 nmdata++;
a61af66fc99e Initial load
duke
parents:
diff changeset
213 // copy the table after the length
a61af66fc99e Initial load
duke
parents:
diff changeset
214 memmove( nmdata, _data, 2 * len() * sizeof(implicit_null_entry));
a61af66fc99e Initial load
duke
parents:
diff changeset
215 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
216 // zero length table takes zero bytes
a61af66fc99e Initial load
duke
parents:
diff changeset
217 assert(size_in_bytes() == 0, "bad size");
a61af66fc99e Initial load
duke
parents:
diff changeset
218 assert(nm->nul_chk_table_size() == 0, "bad size");
a61af66fc99e Initial load
duke
parents:
diff changeset
219 }
a61af66fc99e Initial load
duke
parents:
diff changeset
220 }
a61af66fc99e Initial load
duke
parents:
diff changeset
221
a61af66fc99e Initial load
duke
parents:
diff changeset
222 void ImplicitExceptionTable::verify(nmethod *nm) const {
a61af66fc99e Initial load
duke
parents:
diff changeset
223 for (uint i = 0; i < len(); i++) {
1748
3e8fbc61cee8 6978355: renaming for 6961697
twisti
parents: 1552
diff changeset
224 if ((*adr(i) > (unsigned int)nm->insts_size()) ||
3e8fbc61cee8 6978355: renaming for 6961697
twisti
parents: 1552
diff changeset
225 (*(adr(i)+1) > (unsigned int)nm->insts_size()))
1490
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents: 0
diff changeset
226 fatal(err_msg("Invalid offset in ImplicitExceptionTable at " PTR_FORMAT, _data));
0
a61af66fc99e Initial load
duke
parents:
diff changeset
227 }
a61af66fc99e Initial load
duke
parents:
diff changeset
228 }