src/share/vm/runtime/relocator.cpp
Print this page
*** 1,7 ****
/*
! * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 390,409 ****
}
// The width of instruction at "pc" is changing by "delta". Adjust the
// exception table, if any, of "rc->mb".
void Relocator::adjust_exception_table(int bci, int delta) {
! typeArrayOop table = method()->exception_table();
! for (int index = 0; index < table->length(); index +=4) {
! if (table->int_at(index) > bci) {
! table->int_at_put(index+0, table->int_at(index+0) + delta);
! table->int_at_put(index+1, table->int_at(index+1) + delta);
! } else if (bci < table->int_at(index+1)) {
! table->int_at_put(index+1, table->int_at(index+1) + delta);
}
! if (table->int_at(index+2) > bci)
! table->int_at_put(index+2, table->int_at(index+2) + delta);
}
}
// The width of instruction at "bci" is changing by "delta". Adjust the line number table.
--- 390,409 ----
}
// The width of instruction at "pc" is changing by "delta". Adjust the
// exception table, if any, of "rc->mb".
void Relocator::adjust_exception_table(int bci, int delta) {
! ExceptionTable table(_method());
! for (int index = 0; index < table.length(); index ++) {
! if (table.start_pc(index) > bci) {
! table.set_start_pc(index, table.start_pc(index) + delta);
! table.set_end_pc(index, table.end_pc(index) + delta);
! } else if (bci < table.end_pc(index)) {
! table.set_end_pc(index, table.end_pc(index) + delta);
}
! if (table.handler_pc(index) > bci)
! table.set_handler_pc(index, table.handler_pc(index) + delta);
}
}
// The width of instruction at "bci" is changing by "delta". Adjust the line number table.