RFR: 8031639: make dependency management (mostly) ci independent

Christian Thalinger christian.thalinger at oracle.com
Mon Jan 13 22:42:28 PST 2014


I like the change.  What was the motivation for choosing:

positive: metadata, negative: object

If it would be the other way around you wouldn't have to negate the sort key:

+    // Used to sort values in ascending order of index() with metadata values preceding object values
+    int sort_key() const { return -_id; }

src/share/vm/code/dependencies.hpp:

+  bool note_dep_seen(int dept, DepValue x) {
+    assert(dept < BitsPerInt, "oops");
+    // place metadata deps at even indexes, object deps at odd indexes
+    int x_id = x.is_metadata() ? x.index() * 2 : (x.index() * 2) + 1;

This means we’re using twice as much memory for seen dependencies but I guess it doesn’t matter much.

On a related note to the comment above if _id would be:

+        _id = (rec->find_index(metadata) << 1) | 1;

we would have unique, ready-to-use indexes.  Is there a reason why metadata and object values need to be grouped together?

On Jan 13, 2014, at 2:55 PM, Doug Simon <doug.simon at oracle.com> wrote:

> Hi all,
> 
> I would like to request a review for a change to the Dependencies class such that it can be used to register assumptions based on either ci* values or raw values. The motivation is support compilers (such as Graal) that don't use the ci interface. 
> 
> jbs:    https://bugs.openjdk.java.net/browse/JDK-8031639
> webrev: http://cr.openjdk.java.net/~dnsimon/JDK-8031639/
> 
> -Doug
> 



More information about the hotspot-compiler-dev mailing list