comparison src/share/vm/runtime/relocator.cpp @ 6275:957c266d8bc5

Merge with http://hg.openjdk.java.net/hsx/hsx24/hotspot/
author Doug Simon <doug.simon@oracle.com>
date Tue, 21 Aug 2012 10:39:19 +0200
parents 8150fa46d2ed
children 4ee06e614636
comparison
equal deleted inserted replaced
5891:fd8832ae511d 6275:957c266d8bc5
1 /* 1 /*
2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
390 } 390 }
391 391
392 // The width of instruction at "pc" is changing by "delta". Adjust the 392 // The width of instruction at "pc" is changing by "delta". Adjust the
393 // exception table, if any, of "rc->mb". 393 // exception table, if any, of "rc->mb".
394 void Relocator::adjust_exception_table(int bci, int delta) { 394 void Relocator::adjust_exception_table(int bci, int delta) {
395 typeArrayOop table = method()->exception_table(); 395 ExceptionTable table(_method());
396 for (int index = 0; index < table->length(); index +=4) { 396 for (int index = 0; index < table.length(); index ++) {
397 if (table->int_at(index) > bci) { 397 if (table.start_pc(index) > bci) {
398 table->int_at_put(index+0, table->int_at(index+0) + delta); 398 table.set_start_pc(index, table.start_pc(index) + delta);
399 table->int_at_put(index+1, table->int_at(index+1) + delta); 399 table.set_end_pc(index, table.end_pc(index) + delta);
400 } else if (bci < table->int_at(index+1)) { 400 } else if (bci < table.end_pc(index)) {
401 table->int_at_put(index+1, table->int_at(index+1) + delta); 401 table.set_end_pc(index, table.end_pc(index) + delta);
402 } 402 }
403 if (table->int_at(index+2) > bci) 403 if (table.handler_pc(index) > bci)
404 table->int_at_put(index+2, table->int_at(index+2) + delta); 404 table.set_handler_pc(index, table.handler_pc(index) + delta);
405 } 405 }
406 } 406 }
407 407
408 408
409 // The width of instruction at "bci" is changing by "delta". Adjust the line number table. 409 // The width of instruction at "bci" is changing by "delta". Adjust the line number table.