comparison src/share/vm/prims/jvmtiCodeBlobEvents.cpp @ 1253:f70b0d9ab095

6910618: C2: Error: assert(d->is_oop(),"JVM_ArrayCopy: dst not an oop") Summary: Mark in PcDesc call sites which return oop and save the result oop across objects reallocation during deoptimization. Reviewed-by: never
author kvn
date Tue, 09 Feb 2010 01:31:13 -0800
parents 72088be4b386
children c18cbe5936b8
comparison
equal deleted inserted replaced
1252:f516d5d7a019 1253:f70b0d9ab095
400 pcds_in_method = (nm->scopes_pcs_end() - nm->scopes_pcs_begin()); 400 pcds_in_method = (nm->scopes_pcs_end() - nm->scopes_pcs_begin());
401 map = NEW_C_HEAP_ARRAY(jvmtiAddrLocationMap, pcds_in_method); 401 map = NEW_C_HEAP_ARRAY(jvmtiAddrLocationMap, pcds_in_method);
402 402
403 address scopes_data = nm->scopes_data_begin(); 403 address scopes_data = nm->scopes_data_begin();
404 for( pcd = nm->scopes_pcs_begin(); pcd < nm->scopes_pcs_end(); ++pcd ) { 404 for( pcd = nm->scopes_pcs_begin(); pcd < nm->scopes_pcs_end(); ++pcd ) {
405 ScopeDesc sc0(nm, pcd->scope_decode_offset(), pcd->should_reexecute()); 405 ScopeDesc sc0(nm, pcd->scope_decode_offset(), pcd->should_reexecute(), pcd->return_oop());
406 ScopeDesc *sd = &sc0; 406 ScopeDesc *sd = &sc0;
407 while( !sd->is_top() ) { sd = sd->sender(); } 407 while( !sd->is_top() ) { sd = sd->sender(); }
408 int bci = sd->bci(); 408 int bci = sd->bci();
409 if (bci != InvocationEntryBci) { 409 if (bci != InvocationEntryBci) {
410 assert(map_length < pcds_in_method, "checking"); 410 assert(map_length < pcds_in_method, "checking");