Mercurial > hg > truffle
comparison src/share/vm/ci/ciMethodBlocks.cpp @ 646:039a914095f4
6772368: REGRESSION:tomcat crashed twice with JDK 7
Summary: Call make_block_at() with the original handler limits.
Reviewed-by: never
author | kvn |
---|---|
date | Wed, 18 Mar 2009 13:25:02 -0700 |
parents | 194b8e3a2fc4 |
children | bd02caa94611 |
comparison
equal
deleted
inserted
replaced
645:c3a720eefe82 | 646:039a914095f4 |
---|---|
282 // The try block above is divided into 2 exception blocks | 282 // The try block above is divided into 2 exception blocks |
283 // separated by 'areturn' bci. | 283 // separated by 'areturn' bci. |
284 // | 284 // |
285 int ex_start = handler->start(); | 285 int ex_start = handler->start(); |
286 int ex_end = handler->limit(); | 286 int ex_end = handler->limit(); |
287 // ensure a block at the start of exception range and start of following code | |
288 (void) make_block_at(ex_start); | |
289 if (ex_end < _code_size) | |
290 (void) make_block_at(ex_end); | |
291 | |
287 if (eb->is_handler()) { | 292 if (eb->is_handler()) { |
288 // Extend old handler exception range to cover additional range. | 293 // Extend old handler exception range to cover additional range. |
289 int old_ex_start = eb->ex_start_bci(); | 294 int old_ex_start = eb->ex_start_bci(); |
290 int old_ex_end = eb->ex_limit_bci(); | 295 int old_ex_end = eb->ex_limit_bci(); |
291 if (ex_start > old_ex_start) | 296 if (ex_start > old_ex_start) |
293 if (ex_end < old_ex_end) | 298 if (ex_end < old_ex_end) |
294 ex_end = old_ex_end; | 299 ex_end = old_ex_end; |
295 eb->clear_exception_handler(); // Reset exception information | 300 eb->clear_exception_handler(); // Reset exception information |
296 } | 301 } |
297 eb->set_exception_range(ex_start, ex_end); | 302 eb->set_exception_range(ex_start, ex_end); |
298 // ensure a block at the start of exception range and start of following code | |
299 (void) make_block_at(ex_start); | |
300 if (ex_end < _code_size) | |
301 (void) make_block_at(ex_end); | |
302 } | 303 } |
303 } | 304 } |
304 | 305 |
305 // scan the bytecodes and identify blocks | 306 // scan the bytecodes and identify blocks |
306 do_analysis(); | 307 do_analysis(); |