Mercurial > hg > graal-compiler
diff src/share/vm/oops/method.cpp @ 7469:0c8717a92b2d
8001341: SIGSEGV in methodOopDesc::fast_exception_handler_bci_for(KlassHandle,int,Thread*)+0x3e9.
Summary: Use methodHandle.
Reviewed-by: coleenp, acorn, twisti, sspitsyn
author | jiangli |
---|---|
date | Tue, 08 Jan 2013 13:01:19 -0500 |
parents | 5505fbbae3d3 |
children | 18c3c3fa291b |
line wrap: on
line diff
--- a/src/share/vm/oops/method.cpp Thu Jan 03 15:08:43 2013 -0500 +++ b/src/share/vm/oops/method.cpp Tue Jan 08 13:01:19 2013 -0500 @@ -192,16 +192,16 @@ return buf; } -int Method::fast_exception_handler_bci_for(KlassHandle ex_klass, int throw_bci, TRAPS) { +int Method::fast_exception_handler_bci_for(methodHandle mh, KlassHandle ex_klass, int throw_bci, TRAPS) { // exception table holds quadruple entries of the form (beg_bci, end_bci, handler_bci, klass_index) // access exception table - ExceptionTable table(this); + ExceptionTable table(mh()); int length = table.length(); // iterate through all entries sequentially - constantPoolHandle pool(THREAD, constants()); + constantPoolHandle pool(THREAD, mh->constants()); for (int i = 0; i < length; i ++) { //reacquire the table in case a GC happened - ExceptionTable table(this); + ExceptionTable table(mh()); int beg_bci = table.start_pc(i); int end_bci = table.end_pc(i); assert(beg_bci <= end_bci, "inconsistent exception table");