RFR: 8261675: ObjectValue::set_visited(bool) sets _visited false

Xin Liu xliu at openjdk.java.net
Sat Feb 13 21:24:38 UTC 2021


On Sat, 13 Feb 2021 08:10:22 GMT, Vladimir Kozlov <kvn at openjdk.org> wrote:

> In addition to your fix you can consider next changes to avoid dumping unneeded data in debug info (deoptimizer reads objects data only from top frame [deoptimization.cpp#L190](https://github.com/openjdk/jdk/blob/master/src/hotspot/share/runtime/deoptimization.cpp#L190):
> 
> ```
> src/hotspot/share/opto/output.cpp
>      // We dump the object pool first, since deoptimization reads it in first.
> -    C->debug_info()->dump_object_pool(objs);
> +    C->debug_info()->dump_object_pool(objs, (depth < max_depth));
> ```

hi, Vladimir, 

Thank you for reviewing this patch.

I don't understand why it's depth < max_depth instead of <=.  
Further, the effect of this optimization seems limited. this statement is in a loop like this. 
depth < max_depth is almost always true. 

  for (int depth = 1; depth <= max_depth; depth++) {
...
    C->debug_info()->dump_object_pool(objs, (depth < max_depth));
...
  }

but I get your point. It seems that `Process_OopMap_Node` may dump identical objects in the loop.  I am not sure there are objects overlap different jvmstates.  let me check and create another issue if so.

-------------

PR: https://git.openjdk.java.net/jdk/pull/2560


More information about the hotspot-compiler-dev mailing list