mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 03:24:38 +02:00
6671807: (Escape Analysis) Add new ideal node to represent the state of a scalarized object at a safepoint
Values of non-static fields of a scalarized object should be saved in debug info to reallocate the object during deoptimization. Reviewed-by: never
This commit is contained in:
parent
1931e94bad
commit
000ac830a0
9 changed files with 322 additions and 26 deletions
|
@ -857,6 +857,13 @@ void GraphKit::add_safepoint_edges(SafePointNode* call, bool must_throw) {
|
|||
for (j = 0; j < l; j++)
|
||||
call->set_req(p++, in_map->in(k+j));
|
||||
|
||||
// Copy any scalar object fields.
|
||||
k = in_jvms->scloff();
|
||||
l = in_jvms->scl_size();
|
||||
out_jvms->set_scloff(p);
|
||||
for (j = 0; j < l; j++)
|
||||
call->set_req(p++, in_map->in(k+j));
|
||||
|
||||
// Finish the new jvms.
|
||||
out_jvms->set_endoff(p);
|
||||
|
||||
|
@ -864,6 +871,7 @@ void GraphKit::add_safepoint_edges(SafePointNode* call, bool must_throw) {
|
|||
assert(out_jvms->depth() == in_jvms->depth(), "depth must match");
|
||||
assert(out_jvms->loc_size() == in_jvms->loc_size(), "size must match");
|
||||
assert(out_jvms->mon_size() == in_jvms->mon_size(), "size must match");
|
||||
assert(out_jvms->scl_size() == in_jvms->scl_size(), "size must match");
|
||||
assert(out_jvms->debug_size() == in_jvms->debug_size(), "size must match");
|
||||
|
||||
// Update the two tail pointers in parallel.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue