comparison src/share/vm/prims/jvmtiCodeBlobEvents.cpp @ 3018:5857923e563c

Fixed an issue with frame states in exception dispatch chains (now we are correctly rethrowing the exception immediately at entering the interpreter).
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Sat, 18 Jun 2011 19:13:55 +0200
parents f95d63e2154a
children 957c266d8bc5
comparison
equal deleted inserted replaced
3017:b4ba003eb11d 3018:5857923e563c
249 pcds_in_method = (nm->scopes_pcs_end() - nm->scopes_pcs_begin()); 249 pcds_in_method = (nm->scopes_pcs_end() - nm->scopes_pcs_begin());
250 map = NEW_C_HEAP_ARRAY(jvmtiAddrLocationMap, pcds_in_method); 250 map = NEW_C_HEAP_ARRAY(jvmtiAddrLocationMap, pcds_in_method);
251 251
252 address scopes_data = nm->scopes_data_begin(); 252 address scopes_data = nm->scopes_data_begin();
253 for( pcd = nm->scopes_pcs_begin(); pcd < nm->scopes_pcs_end(); ++pcd ) { 253 for( pcd = nm->scopes_pcs_begin(); pcd < nm->scopes_pcs_end(); ++pcd ) {
254 ScopeDesc sc0(nm, pcd->scope_decode_offset(), pcd->should_reexecute(), pcd->return_oop()); 254 ScopeDesc sc0(nm, pcd->scope_decode_offset(), pcd->should_reexecute(), pcd->rethrow_exception(), pcd->return_oop());
255 ScopeDesc *sd = &sc0; 255 ScopeDesc *sd = &sc0;
256 while( !sd->is_top() ) { sd = sd->sender(); } 256 while( !sd->is_top() ) { sd = sd->sender(); }
257 int bci = sd->bci(); 257 int bci = sd->bci();
258 if (bci != InvocationEntryBci) { 258 if (bci != InvocationEntryBci) {
259 assert(map_length < pcds_in_method, "checking"); 259 assert(map_length < pcds_in_method, "checking");