Mercurial > hg > truffle
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"); |